/*
DVB-S2X LDPC parity bit address tables

Entries below copied from:
http://www.etsi.org/deliver/etsi_en/302300_302399/30230702/01.01.01_20/en_30230702v010101a.pdf

Copyright (C) 2018 Ron Economos <w6rz@comcast.net>

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

#ifndef DVB_S2X_TABLES_HH
#define DVB_S2X_TABLES_HH

struct DVB_S2X_TABLE_B1
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 14400;
  static const int LINKS_MIN_CN = 3;
  static const int LINKS_MAX_CN = 4;
  static const int LINKS_TOTAL = 201599;
  static const int DEG_MAX = 11;
  static constexpr int DEG[] = {
    11, 3, 0
  };
  static constexpr int LEN[] = {
    20, 20, 0
  };
  static constexpr int POS[] = {
    5332,  8018,  35444, 13098, 9655,  41945, 44273, 22741, 9371,  8727,  43219,
    41410, 43593, 14611, 46707, 16041, 1459,  29246, 12748, 32996, 676,   46909,
    9340,  35072, 35640, 17537, 10512, 44339, 30965, 25175, 9918,  21079, 29835,
    3332,  12088, 47966, 25168, 50180, 42842, 40914, 46726, 17073, 41812, 34356,
    15159, 2209,  7971,  22590, 20020, 27567, 4853,  10294, 38839, 15314, 49808,
    20936, 14497, 23365, 22630, 38728, 28361, 34659, 956,   8559,  44957, 22222,
    28043, 4641,  25208, 47039, 30612, 25796, 14661, 44139, 27335, 12884, 6980,
    32584, 33453, 1867,  20185, 36106, 30357, 809,   28513, 46045, 27862, 4802,
    43744, 13375, 36066, 23604, 30766, 6233,  45051, 23660, 20815, 19525, 25207,
    27522, 3854,  9311,  21925, 41107, 25773, 26323, 24237, 24344, 46187, 44503,
    10256, 20038, 12177, 26635, 5214,  14191, 34404, 45807, 4938,  4173,  31344,
    32043, 26501, 46725, 4648,  16718, 31060, 26633, 19036, 14222, 13886, 26535,
    18103, 8498,  36814, 34600, 36495, 36712, 29833, 27396, 11877, 42861, 1834,
    36592, 1645,  3649,  30521, 14674, 3630,  890,   13307, 41412, 24682, 9907,
    4401,  44543, 13784, 5828,  32862, 25179, 29736, 39614, 5186,  49749, 38317,
    41460, 39101, 50080, 40137, 32691, 26528, 35332, 44067, 8467,  14286, 10470,
    12211, 34019, 37870, 36918, 36419, 33153, 50070, 41498, 47741, 30538, 12342,
    33751, 23988, 33624, 41882, 34075, 25552, 3106,  17611, 13190, 29336, 312,
    5667,  35483, 35460, 16153, 37267, 28308, 50009, 46345, 34204, 32756, 38243,
    5657,  24157, 36834, 6890,  49576, 46244, 43875, 16738, 47225, 2944,  36882,
    30341, 48485, 3700,
    14451, 20438, 18875,
    13634, 41138, 42962,
    46459, 13369, 27974,
    21493, 14629, 2369,
    11351, 40226, 42457,
    34749, 39000, 3912,
    18128, 46776, 47055,
    2221,  26806, 11345,
    35143, 630,   2229,
    44009, 41295, 34646,
    32163, 16657, 26544,
    31770, 23641, 43623,
    45826, 10902, 39490,
    7514,  20480, 28511,
    11429, 19834, 35430,
    50112, 38163, 5738,
    16191, 16862, 6783,
    6085,  39149, 34988,
    41497, 32023, 28688,
  };
};

struct DVB_S2X_TABLE_B2
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 18720;
  static const int LINKS_MIN_CN = 4;
  static const int LINKS_MAX_CN = 5;
  static const int LINKS_TOTAL = 226079;
  static const int DEG_MAX = 12;
  static constexpr int DEG[] = {
    12, 3, 0
  };
  static constexpr int LEN[] = {
    24, 28, 0
  };
  static constexpr int POS[] = {
    15210, 4519,  18217, 34427, 18474, 16813, 28246, 17687, 44527, 31465, 13004, 43601,
    28576, 13611, 24294, 15041, 503,   11393, 26290, 9278,  19484, 20742, 13226, 28322,
    32651, 27323, 22368, 15522, 37576, 20607, 20152, 19741, 26700, 31696, 21061, 35991,
    44168, 27910, 31104, 34776, 38835, 45450, 40002, 31522, 7807,  26330, 2410,  44983,
    15861, 39215, 14631, 42584, 26502, 41864, 27885, 32276, 29049, 16878, 37480, 42550,
    38795, 13012, 7912,  4058,  23869, 3325,  42889, 19921, 13826, 40323, 18162, 10005,
    35100, 5483,  7629,  35166, 1239,  10772, 5289,  286,   16172, 41843, 42612, 38493,
    11997, 40340, 19047, 16236, 43557, 9104,  24032, 2915,  19265, 36209, 6443,  40947,
    43527, 29675, 4195,  31926, 35392, 20400, 7515,  45806, 36068, 33079, 37325, 6301,
    4580,  20492, 40934, 14478, 8238,  2425,  28901, 43602, 7224,  17640, 28259, 6850,
    41859, 14006, 19132, 5690,  16223, 11575, 30562, 44797, 3759,  9833,  36529, 21084,
    45546, 16044, 26763, 13559, 29092, 41595, 5726,  13733, 9164,  15354, 20145, 10655,
    24076, 40883, 13424, 30325, 40589, 32367, 36270, 9286,  40151, 8501,  3871,  22109,
    26239, 29805, 5358,  44835, 11609, 3899,  9760,  39600, 43422, 13295, 45431, 14515,
    5392,  37010, 12386, 40193, 21492, 45146, 12376, 41952, 43153, 45733, 718,   35726,
    33884, 38006, 16927, 20958, 25413, 44561, 11245, 12984, 35198, 30977, 31916, 10657,
    1412,  1048,  14965, 31879, 29967, 41000, 32087, 22,    34773, 768,   27289, 19898,
    43051, 6964,  31807, 4119,  33509, 15950, 6304,  2813,  35192, 38282, 39710, 26356,
    9889,  18957, 6355,  18770, 40381, 1876,  38889, 17958, 20309, 10744, 1744,  228,
    41543, 36505, 32795, 12454, 8520,  4916,  22313, 1363,  13010, 8770,  17057, 8694,
    22987, 29564, 13804, 3110,  1382,  33844, 15117, 42314, 36045, 25295, 28421, 22044,
    15951, 42952, 17458, 6926,  21257, 41243, 8662,  17046, 15054, 15302, 16964, 40079,
    13359, 45754, 16715, 9586,  10960, 25406, 14675, 8880,  5087,  12303, 28993, 13571,
    24824, 31012, 4121,  808,   30962, 28736, 11013, 20488, 7715,  7637,  6217,  25114,
    23615, 5760,  5554,
    18072, 21605, 39242,
    24190, 6592,  12281,
    44681, 6563,  7001,
    18291, 19605, 33476,
    2884,  30927, 18430,
    23674, 36414, 30649,
    15364, 22089, 19757,
    41162, 14454, 17627,
    16676, 28573, 22163,
    8851,  36803, 27589,
    40049, 476,   1413,
    41013, 34505, 33296,
    29782, 38018, 42124,
    22625, 7485,  11772,
    2052,  37567, 14082,
    30106, 43203, 20858,
    7399,  3796,  22396,
    38745, 792,   44483,
    28268, 33355, 41030,
    30098, 37269, 12871,
    35769, 33119, 16738,
    3307,  43434, 13244,
    17852, 9133,  23190,
    35184, 20115, 24202,
    14760, 43026, 19425,
    26414, 16821, 6625,
    30362, 35769, 42608
  };
};

struct DVB_S2X_TABLE_B3
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 29160;
  static const int LINKS_MIN_CN = 6;
  static const int LINKS_MAX_CN = 7;
  static const int LINKS_TOTAL = 249479;
  static const int DEG_MAX = 12;
  static constexpr int DEG[] = {
    12, 4, 3, 0
  };
  static constexpr int LEN[] = {
    27, 9, 45, 0
  };
  static constexpr int POS[] = {
    30649, 35117, 23181, 15492, 2367,  31230, 9368,  13541, 6608,  23384, 18300, 5905,
    1961,  8950,  20589, 17688, 9641,  1877,  4937,  15293, 24864, 14876, 6516,  10165,
    4229,  26034, 28862, 8265,  27847, 3,     22728, 13946, 27162, 26003, 17696, 13261,
    31719, 25669, 17149, 17377, 33106, 12630, 4814,  16334, 1480,  32952, 11187, 3849,
    30186, 20938, 7946,  23283, 11042, 28080, 26642, 34560, 11302, 4991,  5121,  6879,
    13445, 22794, 18048, 15116, 5657,  9853,  15581, 34960, 13240, 11176, 17937, 25081,
    4868,  28235, 30286, 29706, 7073,  6773,  10390, 27002, 13015, 7388,  14772, 19581,
    11765, 16642, 11431, 19588, 20154, 8027,  29758, 5501,  6398,  4268,  21337, 21136,
    2275,  7899,  25943, 12939, 14478, 20369, 22877, 3591,  12217, 19130, 24252, 32444,
    24599, 21382, 4689,  3524,  11304, 20423, 13677, 19639, 10577, 28279, 22330, 30722,
    21622, 26233, 3921,  17722, 6843,  5999,  8186,  2355,  33632, 34632, 30285, 9616,
    19909, 30417, 19587, 27853, 13896, 3689,  155,   20457, 33362, 21739, 22779, 33862,
    3713,  32975, 9403,  2836,  23109, 11099, 3505,  14562, 17309, 26470, 4843,  12279,
    24216, 26340, 22073, 32570, 12936, 19797, 21801, 8918,  7999,  24408, 5783,  25190,
    8817,  29367, 17017, 6208,  21402, 2280,  2110,  7975,  32039, 34605, 1235,  912,
    23116, 33017, 31405, 638,   4707,  31760, 18043, 3507,  11989, 26632, 32829, 11262,
    9274,  2553,  10697, 13507, 15323, 27080, 3752,  33191, 12363, 24664, 14068, 1416,
    21670, 26696, 18570, 25197, 1517,  7765,  32686, 6572,  30901, 28242, 17802, 24056,
    35388, 26895, 8023,  31249, 29290, 13440, 7156,  17367, 21472, 27219, 14447, 9655,
    11100, 27918, 2900,  33262, 15301, 4664,  15728, 1185,  24818, 32995, 31108, 16368,
    34978, 31690, 30464, 13044, 5492,  10047, 2768,  14336, 30880, 32780, 10993, 24750,
    7022,  19718, 26036, 19145, 21177, 33949, 17135, 5193,  33718, 2539,  13920, 25537,
    918,   18514, 14530, 13699, 11902, 22721, 8335,  35346, 24655, 3332,  14708, 20822,
    11191, 24064, 32825, 12321, 11771, 23299, 31325, 25526, 16785, 22212, 34075, 9066,
    31209, 27819, 5974,  19918, 26831, 33338, 26647, 9480,  28489, 7827,  18562, 2401,
    17395, 23192, 10277, 28458, 23028, 18793, 10463, 10740, 616,   24647, 4153,  10128,
    2873,  22381, 8132,  18239, 31614, 4193, 32313,  7575,  25801, 27591, 19872, 17992,
    4609,  9114,  14764, 13516,
    19192, 9882,  13112, 16075,
    12510, 28902, 8784,  32679,
    4578,  34533, 30609, 25543,
    13739, 3465,  5330,  999,
    33254, 13085, 5001,  29061,
    28369, 79,    17750, 13399,
    24851, 9524,  30966, 10422,
    18251, 34810, 12259, 25103,
    25193, 16945, 1059,
    11266, 13612, 30508,
    24778, 25364, 1322,
    14492, 11111, 13693,
    15125, 8205,  1749,
    8494,  9902,  9395,
    23936, 3981,  22799,
    28448, 28076, 26544,
    19652, 13424, 8915,
    2885,  11356, 3241,
    1609,  10284, 24350,
    2462,  19358, 15717,
    29327, 15960, 14743,
    5388,  32927, 1288,
    19074, 6322,  32214,
    34208, 30535, 35462,
    23415, 20836, 21819,
    17986, 12196, 30030,
    8422,  2647,  5710,
    3200,  23132, 23337,
    22307, 29841, 4813,
    15309, 26942, 29970,
    23288, 7493,  3005,
    20661, 34283, 33192,
    23033, 9541,  6424,
    22003, 24665, 5534,
    4684,  1411,  33340,
    26042, 6426,  3808,
    285,   21942, 14302,
    16023, 6825,  20084,
    34878, 12295, 32028,
    2591,  178,   24107,
    16379, 2912,  9912,
    15375, 16120, 28375,
    20170, 726,   11291,
    8185,  13471, 8448,
    23205, 14239, 17896,
    17950, 19308, 1591,
    3170,  23836, 18879,
    12853, 10678, 18431,
    21157, 31624, 3153,
    27682, 12433, 3458,
    312,   4844,  13138,
    17715, 35138, 15456,
    30507, 33307, 30783
  };
};

struct DVB_S2X_TABLE_B4
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 35640;
  static const int LINKS_MIN_CN = 8;
  static const int LINKS_MAX_CN = 9;
  static const int LINKS_TOTAL = 262439;
  static const int DEG_MAX = 13;
  static constexpr int DEG[] = {
    13, 3, 0
  };
  static constexpr int LEN[] = {
    27, 72, 0
  };
  static constexpr int POS[] = {
    20834, 22335, 21330, 11913, 6036,  15830, 11069, 10539, 4244,  15068, 7113,  2704,  16224,
    2010,  5628,  27960, 11690, 22545, 24432, 4986,  21083, 17529, 4104,  11941, 21239, 9602,
    689,   13248, 1777,  4876,  2537,  20869, 15718, 9575,  18164, 5294,  13914, 21711, 23374,
    9675,  21239, 13600, 24710, 10613, 14804, 19412, 23270, 26741, 10503, 25258, 17816, 25210,
    12518, 8680,  6422,  22715, 25097, 26959, 3913,  26493, 7797,  25977, 4896,  27063, 20781,
    21715, 12850, 7963,  4027,  4295,  14931, 18158, 616,   20570, 8720,  16487, 19050, 23925,
    7939,  21089, 15170, 24325, 6651,  22352, 5633,  27903, 2685,  1310,  5594,  9296,  25670,
    25121, 13906, 8217,  25390, 9112,  13945, 9826,  10844, 11418, 10724, 11518, 9280,  9576,
    25979, 23644, 16073, 27407, 3476,  28057, 4003,  2279,  17490, 7558,  9538,  22115, 20439,
    20708, 22572, 14997, 15780, 5159,  11356, 10931, 8514,  23275, 2560,  912,   15935, 20703,
    26467, 17173, 21964, 15469, 21967, 10380, 16222, 15106, 16786, 19542, 28560, 18387, 27909,
    14897, 6167,  24295, 1266,  16902, 9546,  11628, 12048, 24495, 3706,  22629, 14165, 2333,
    19403, 18738, 28140, 13141, 6151,  22785, 9620,  4290,  2342,  4902,  15856, 19033, 22820,
    15761, 1985,  9160,  4435,  11164, 5442,  23572, 6951,  19077, 15406, 16658, 18324, 19229,
    16997, 10094, 19982, 22821, 7810,  19660, 1182,  21968, 16564, 17453, 10780, 17034, 16405,
    11,    28611, 10411, 15799, 15705, 2773,  28601, 19333, 19447, 16790, 4618,  15841, 23854,
    24686, 4131,  1013,  2141,  6052,  11896, 18719, 16813, 22420, 23406, 21052, 4333,  17754,
    16425, 17614, 26883, 12101, 8224,  13979, 6869,  25215, 25991, 28968, 19337, 25361, 20513,
    1671,  14990, 20692, 24951, 19446, 7163,  4959,  13197, 19201, 3883,  22532, 15468, 11856,
    22758, 23586, 16985, 18396, 7434,  11817, 363,   11824, 285,   20897, 16646, 16095, 17011,
    25144, 14916, 6302,  20972, 25439, 6156,  21776, 19701, 27803, 9695,  12941, 23541, 27425,
    6979,  27910, 7378,  8983,  6280,  4134,  28860, 8079,  20892, 28776, 7899,  23399, 87,
    18045, 23929, 25876, 15560, 23629, 18376, 4053,  14655, 2450,  11907, 19535, 28543, 3513,
    4704,  16512, 16554, 14062, 2596,  10357, 17316, 1011,  22090, 11353, 20300, 15300, 18536,
    14293, 4746,  28831, 20028, 16742, 16835, 28405, 11245, 10802, 20242, 17737, 9590,  20693,
    26547, 22557, 22517, 6285,  5336,  3998,  2351,  6628,  22949, 1517,  4712,  1770,  9207,
    28522, 14116, 5455,  13105, 18709, 3030,  4217,  6306,  27448, 1943,  23866, 20212, 18857,
    14794, 21425, 15659,
    4446,  21140, 13454,
    21115, 3271,  1443,
    2153,  12424, 6159,
    23559, 22473, 26065,
    15914, 22980, 12766,
    3482,  16233, 5719,
    27020, 12322, 24014,
    25438, 26499, 26506,
    21987, 16027, 6832,
    17330, 2620,  20756,
    15985, 10471, 23302,
    593,   6869,  27185,
    22961, 9129,  25646,
    10702, 12334, 23959,
    6375,  23299, 26942,
    8029,  4072,  24051,
    15147, 5113,  14725,
    1451,  27291, 28731,
    18808, 11561, 249,
    28962, 21405, 18944,
    6889,  3314,  23457,
    27708, 14530, 8795,
    6185,  28821, 6550,
    2259,  17627, 701,
    20819, 18831, 20140,
    4991,  11369, 4282,
    13230, 3413,  27092,
    14556, 5068,  16209,
    4337,  24652, 498,
    715,   28883, 2285,
    16524, 25513, 26034,
    21067, 15122, 21667,
    27982, 15280, 3313,
    7563,  22779, 22453,
    4744,  17277, 27210,
    19170, 10806, 18815,
    26424, 26442, 7837,
    26264, 28931, 6020,
    4645,  20678, 13160,
    18111, 28045, 23883,
    5128,  10876, 3087,
    28551, 26276, 3541,
    20152, 10181, 28172,
    26430, 14769, 6809,
    4956,  16130, 11348,
    1691,  10216, 5743,
    7848,  20236, 2661,
    10660, 8321,  6155,
    2757,  6963,  2596,
    27791, 6707,  258,
    12785, 21176, 15450,
    7477,  17274, 25201,
    262,   18996, 15836,
    5287,  11970, 13365,
    3098,  17823, 10786,
    21831, 14476, 11447,
    1893,  3625,  25404,
    20880, 21987, 1228,
    20942, 15045, 21358,
    18237, 28914, 15673,
    24273, 284,   9803,
    13949, 15670, 16693,
    15553, 27782, 22644,
    27980, 24820, 27733,
    7015,  20974, 10016,
    26164, 20314, 25916,
    11489, 13663, 11777,
    18230, 11483, 5655,
    1618,  19977, 26521,
    25639, 13184, 28994,
    3821,  18349, 13846
  };
};

struct DVB_S2X_TABLE_B5
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 37440;
  static const int LINKS_MIN_CN = 9;
  static const int LINKS_MAX_CN = 10;
  static const int LINKS_TOTAL = 273599;
  static const int DEG_MAX = 13;
  static constexpr int DEG[] = {
    13, 12, 3, 0
  };
  static constexpr int LEN[] = {
    8, 24, 72, 0
  };
  static constexpr int POS[] = {
    12918, 15296, 894,   10855, 350,   453,   11966, 1667,  18720, 12943, 24437, 8135,  2834,
    11861, 3827,  15431, 8827,  8253,  23393, 15048, 5554,  16297, 2994,  6727,  19453, 2371,
    26414, 3044,  20240, 18313, 11618, 3145,  10976, 5786,  5609,  16358, 2547,  11557, 14755,
    26434, 2510,  26719, 4420,  6753,  917,   7821,  26765, 11684, 9811,  5420,  6653,  19554,
    11928, 20579, 17439, 19103, 21162, 11235, 19172, 22254, 3420,  10558, 3646,  11858, 24120,
    10189, 8172,  5004,  26082, 4345,  5139,  15135, 26522, 6172,  17492, 8462,  4392,  4546,
    27330, 21498, 13424, 8077,  10165, 9739,  482,   23749, 1515,  12788, 10464, 9085,  20875,
    12009, 22276, 18401, 7541,  5871,  23053, 16979, 16300, 13566, 19424, 5293,  18290, 23917,
    9613,  24175, 11374, 11736, 17676, 13126, 20931, 20290, 20659, 2000,  7969,  9386,
    21507, 24494, 11822, 21771, 26776, 21175, 27354, 15815, 7598,  19809, 611,   10144,
    195,   14244, 7229,  13002, 14328, 17987, 14595, 6985,  7642,  9434,  7079,  5571,
    10013, 3641,  14064, 11716, 4620,  18119, 23365, 26446, 26273, 25164, 11262, 26019,
    15166, 19403, 5606,  20138, 1893,  645,   5414,  12097, 18635, 21648, 12255, 13269,
    1895,  9969,  8372,  17737, 21679, 17061, 20219, 2513,  27199, 11242, 17025, 1261,
    12845, 13086, 16256, 15177, 20822, 10862, 18375, 6751,  17532, 24725, 6966,  18489,
    8373,  25550, 20688, 16686, 7894,  24599, 21578, 12516, 7115,  4836,  23473, 25162,
    14375, 9150,  6606,  21633, 16224, 23708, 20350, 4575,  143,   13356, 10239, 22868,
    10760, 19807, 7079,  16382, 26236, 22606, 16777, 24312, 16941, 26684, 8658,  19279,
    15136, 8603,  332,   2898,  21821, 23778, 3232,  12052, 14336, 7832,  5600,  27015,
    14392, 26564, 21616, 8332,  21750, 10379, 19730, 7553,  27352, 2718,  15202, 25661,
    6891,  13210, 15284, 21940, 8742,  10965, 3176,  25034, 25137, 25161, 13267, 7012,
    4993,  9943,  13260, 20980, 20224, 20129, 2120,  23111, 16640, 23548, 21445, 10794,
    4846,  2858,  22663, 12584, 20448, 4629,  17825, 22269, 11278, 26312, 9463,  21085,
    24282, 18233, 9220,  14979, 24106, 14507, 24838, 19689, 17589, 7926,  7893,  21701,
    12253, 26122, 8035,  20823, 2584,  4703,  25178, 5460,  4190,  7057,  1144,  8426,
    12354, 7216,  19484, 4110,  22105, 1452,  11457, 12539, 27106, 14256, 14113, 20701,
    2547,  26926, 25933, 11919, 12026, 24639, 19741, 15457, 9239,  26713, 22838, 6051,
    8782,  14714, 23363, 450,   19972, 2622,  19473, 24182, 2391,  26205, 10018, 9202,
    15690, 10472, 20263, 469,   18876, 23660, 9005,  12595, 23818, 26430, 926,   6156,
    5440,  5209,  14958, 9882,  18843, 22063, 12749, 18473, 22546, 11768, 4493,  12833,
    18540, 3544,  9471,  15893, 14761, 23479, 22010, 15491, 19608, 25035, 9094,  24836,
    15909, 16594, 23538, 25136, 25063, 24995, 5354,  905,   18580, 15476, 20710, 7774,
    6088,  17133, 11498,
    4721,  17594, 18267,
    1645,  23638, 26645,
    14800, 17920, 22016,
    12927, 350,   19391,
    19447, 19886, 25992,
    26120, 1747,  11234,
    1588,  23170, 27232,
    2230,  15468, 18709,
    17410, 11055, 20645,
    3244,  25815, 14204,
    2858,  7980,  12780,
    3256,  20418, 24355,
    24260, 16245, 20948,
    11122, 1503,  15651,
    19272, 24054, 6075,
    4905,  931,   18884,
    23633, 17244, 6067,
    5568,  26403, 490,
    16113, 16055, 10524,
    23013, 8138,  12876,
    20699, 20123, 15435,
    27272, 27296, 22638,
    7658,  17259, 20553,
    14914, 17891, 12137,
    16323, 1085,  18895,
    21503, 17141, 2915,
    21979, 23246, 1271,
    14409, 11303, 12604,
    25591, 12157, 14704,
    18739, 19265, 8140,
    11244, 5962,  6647,
    3589,  6029,  6489,
    16416, 185,   9426,
    1267,  14086, 22473,
    17159, 22404, 23608,
    7230,  22514, 21605,
    7645,  1239,  10717,
    12028, 13404, 12140,
    14784, 15425, 14895,
    26165, 18980, 15386,
    14399, 7725,  14908,
    8463,  22853, 22095,
    5517,  1854,  8283,
    24381, 260,   12595,
    839,   23743, 22445,
    13473, 8017,  7716,
    8697,  13050, 16975,
    26656, 16911, 11972,
    26173, 2504,  15216,
    7493,  6461,  12840,
    4464,  14912, 3745,
    21461, 9734,  25841,
    4659,  7599,  9984,
    17519, 7389,  75,
    12589, 9862,  8680,
    23053, 21981, 25299,
    19246, 3243,  15916,
    21733, 4467,  26491,
    4959,  10093, 20074,
    9140,  15000, 12783,
    854,   10701, 25850,
    13624, 7755,  10789,
    3977,  15812, 10783,
    5830,  6774,  10151,
    21375, 25110, 5830,
    15985, 18342, 2623,
    4716,  27211, 18500,
    18370, 12487, 7335,
    4362,  21569, 16881,
    10421, 15454, 13015,
    5794,  1239,  9934
  };
};

struct DVB_S2X_TABLE_B6
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 40320;
  static const int LINKS_MIN_CN = 9;
  static const int LINKS_MAX_CN = 10;
  static const int LINKS_TOTAL = 244799;
  static const int DEG_MAX = 11;
  static constexpr int DEG[] = {
    11, 7, 3, 0
  };
  static constexpr int LEN[] = {
    24, 4, 84, 0
  };
  static constexpr int POS[] = {
    24402, 4786,  12678, 6376,  23965, 10003, 15376, 15164, 21366, 24252, 3353,
    8189,  3297,  18493, 17994, 16296, 11970, 16168, 15911, 20683, 11930, 3119,
    22463, 11744, 13833, 8279,  21652, 14679, 23663, 4389,  15110, 17254, 17498,
    13616, 426,   18060, 598,   19615, 9494,  3987,  8014,  13361, 4131,  13185,
    4176,  17725, 14717, 3414,  10033, 17879, 8079,  12107, 10852, 1375,  19459,
    1450,  4123,  2111,  17490, 13209, 8048,  15285, 4422,  11667, 18290, 19621,
    2067,  15982, 304,   8658,  19120, 6746,  13569, 19253, 2227,  22778, 23826,
    11667, 11145, 20469, 17485, 13697, 3712,  4258,  16831, 22634, 18035, 7275,
    23804, 14496, 17938, 15883, 14984, 15944, 2816,  22406, 22111, 2319,  14731,
    8541,  12579, 22121, 8602,  16755, 6704,  23740, 16151, 20297, 9633,  1100,
    19569, 10549, 19086, 21110, 11659, 6901,  21295, 7637,  11756, 8293,  9071,
    9527,  9135,  7181,  19534, 2157,  788,   13347, 17355, 17509, 711,   20116,
    21217, 15801, 12175, 9604,  17521, 2127,  21103, 1346,  8921,  7976,  3363,
    11036, 5152,  19173, 8086,  3571,  1955,  4146,  13309, 15934, 19132, 5510,
    12935, 13966, 15399, 16179, 8206,  19233, 16702, 7127,  12185, 15420, 1383,
    6222,  6384,  20549, 18914, 23658, 11189, 638,   9297,  17741, 9747,  13598,
    17209, 11974, 20776, 2146,  9023,  3192,  19646, 3393,  1727,  15588, 20185,
    5008,  3885,  5035,  15852, 5189,  13877, 15177, 3049,  22164, 16540, 21064,
    24004, 10345, 12255, 36,    24008, 8764,  13276, 13131, 2358,  24010, 16203,
    21121, 21691, 8555,  11918, 129,   8860,  23600, 3042,  3949,  19554, 12319,
    22514, 11709, 11874, 11656, 536,   9142,  3901,  580,   1547,  10749, 5529,
    3324,  6251,  1156,  112,   13086, 5373,  5119,  132,   18069, 10482, 19519,
    17279, 2017,  14846, 21417, 17154, 21735, 18788, 11759, 192,   16027, 6234,
    20417, 3788,  15159, 22188, 21251, 16633, 13579, 8128,  1841,  23554, 15056,
    12104, 9182,  6147,  1553,  12750, 4071,  6495,
    4961,  18460, 23266, 10785, 10973, 4405,  2707,
    7665,  7043,  1968,  3589,  15378, 9642,  21148,
    13073, 13298, 20040, 13582, 17124, 348,   12055,
    378,   7476,  9838,
    15454, 5218,  14834,
    17678, 3445,  18453,
    2767,  388,   12638,
    5688,  56,    6360,
    20009, 872,   16872,
    10206, 5551,  477,
    10662, 23689, 19768,
    8965,  17535, 4421,
    19397, 18734, 5422,
    10043, 22104, 21682,
    508,   1588,  23853,
    1092,  7288,  4358,
    2283,  22298, 10504,
    15022, 8592,  22291,
    11844, 17038, 2983,
    17404, 14541, 6446,
    20724, 7498,  2993,
    14715, 9410,  6844,
    20213, 14674, 263,
    4822,  20951, 635,
    20651, 23174, 5057,
    22237, 9229,  4859,
    17280, 9586,  20334,
    19508, 8068,  11375,
    5776,  21209, 9418,
    6872,  6349,  20397,
    11165, 19619, 13108,
    13550, 10715, 5122,
    5655,  10699, 8415,
    9864,  4985,  7986,
    6436,  3754,  7690,
    4257,  17119, 5328,
    659,   4687,  6006,
    527,   10824, 8234,
    11291, 1735,  22513,
    7254,  2617,  1493,
    3015,  7462,  10953,
    15705, 2181,  11992,
    4628,  19430, 18223,
    9426,  21808, 13549,
    17008, 3470,  22568,
    13643, 24195, 21816,
    936,   14226, 22874,
    6156,  19306, 18215,
    23984, 14714, 12907,
    5139,  18639, 15609,
    11908, 5446,  8958,
    6315,  16864, 15814,
    10686, 22570, 16196,
    203,   4208,  13716,
    494,   14172, 11778,
    15112, 14244, 8417,
    21087, 4602,  15570,
    19758, 4401,  22270,
    8218,  11940, 5009,
    23833, 13785, 12569,
    1698,  7113,  18541,
    18711, 19991, 19673,
    8025,  17107, 14784,
    5954,  6817,  19810,
    24143, 12236, 18063,
    23748, 23956, 10369,
    7805,  13982, 13861,
    5198,  10889, 6787,
    10406, 13918, 3305,
    12219, 6523,  12999,
    9964,  2004,  17361,
    23759, 21507, 11984,
    4188,  19754, 13358,
    8027,  3662,  2411,
    19762, 16017, 9125,
    2393,  4619,  5452,
    24176, 6586,  10895,
    15872, 1795,  15801,
    6911,  15300, 14787,
    2584,  4905,  8833,
    1327,  12862, 9476,
    16768, 12633, 7400,
    11983, 6276,  18370,
    12939, 12793, 20048,
    20284, 12949, 21345,
    19545, 4503,  16017,
    1253,  12068, 18813
  };
};

struct DVB_S2X_TABLE_B7
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 41400;
  static const int LINKS_MIN_CN = 9;
  static const int LINKS_MAX_CN = 10;
  static const int LINKS_TOTAL = 233999;
  static const int DEG_MAX = 11;
  static constexpr int DEG[] = {
    11, 6, 3, 0
  };
  static constexpr int LEN[] = {
    20, 5, 90, 0
  };
  static constexpr int POS[] = {
    2475,  3722,  16456, 6081,  4483,  19474, 20555, 10558, 4351,  4052,  20066,
    1547,  5612,  22269, 11685, 23297, 19891, 18996, 21694, 7927,  19412, 15951,
    288,   15139, 7767,  3059,  1455,  12056, 12721, 7938,  19334, 3233,  5711,
    6664,  7486,  17133, 2931,  20176, 20158, 9634,  20002, 13129, 10015, 13595,
    218,   22642, 9357,  11999, 22898, 4446,  8059,  1913,  22365, 10039, 15203,
    10305, 22970, 7928,  16564, 8402,  9988,  7039,  10195, 22389, 5451,  8731,
    19073, 1005,  18826, 11109, 13748, 11891, 21530, 15924, 21128, 6841,  11064,
    3240,  11632, 18386, 22456, 3963,  14719, 4244,  4599,  8098,  7599,  12862,
    5666,  11543, 9276,  19923, 19171, 19591, 6005,  8623,  22777, 1255,  20078,
    17064, 13244, 323,   11349, 6637,  8611,  6695,  4750,  20985, 18144, 5584,
    20309, 6210,  16745, 10959, 14284, 2893,  20916, 10985, 9664,  9065,  11703,
    17833, 21598, 22375, 12890, 10779, 11241, 13115, 9222,  21139, 1217,  15337,
    15514, 12517, 18953, 11458, 17296, 8751,  7213,  12078, 4994,  4391,  14976,
    3842,  21548, 10955, 11679, 16551, 8514,  17999, 20557, 16497, 12122, 23056,
    10551, 20186, 66,    11038, 22049, 2130,  1089,  22093, 9069,  3470,  8079,
    19208, 22044, 2732,  1325,  22309, 967,   22951, 1366,  11745, 5556,  6926,
    2805,  18271, 10046, 4277,  207,   19518, 17387, 9701,  8515,  6813,  10532,
    19714, 21923, 13493, 1768,  18819, 6093,  14086, 13695, 12781, 9782,  445,
    22160, 15778, 13629, 10312, 19769, 8567,  22096, 15558, 19730, 11861, 18492,
    10729, 16847, 273,   4119,  4392,  11480, 20396, 3505,  7220,  390,   5546,
    17277, 8531,  17390, 22364, 7167,  2217,
    7325,  3832,  19899, 21104, 8400,  3906,
    6218,  20330, 14943, 14477, 5614,  1582,
    21534, 14286, 14624, 14809, 6775,  22838,
    15786, 6527,  15848, 5288,  13523, 9692,
    12696, 15315, 602,
    17081, 6828,  13578,
    3492,  6510,  20337,
    6113,  5090,  7290,
    20122, 15539, 19267,
    10412, 19090, 17863,
    2546,  2295,  19448,
    20296, 2296,  2627,
    6740,  14224, 10460,
    12878, 6055,  15452,
    15152, 15699, 563,
    15414, 21900, 19161,
    11126, 15975, 3733,
    4379,  15742, 6475,
    17203, 5870,  18537,
    4912,  260,   21115,
    23164, 4273,  1694,
    1082,  5287,  11152,
    14537, 2277,  19232,
    13414, 15608, 12926,
    17043, 18241, 18313,
    208,   6118,  20777,
    9140,  19241, 22845,
    18527, 5035,  4161,
    20867, 22650, 5585,
    7875,  10358, 1898,
    3563,  14833, 21329,
    14705, 3359,  13959,
    4507,  11976, 20017,
    22424, 12925, 8308,
    8739,  15561, 8010,
    6408,  20723, 20928,
    12337, 7864,  15777,
    12742, 20430, 17351,
    6259,  1865,  9808,
    8343,  17441, 2551,
    2167,  3025,  23181,
    22718, 13243, 4797,
    4223,  4982,  4395,
    1609,  16748, 17625,
    8463,  15204, 19632,
    6583,  9112,  20284,
    11334, 19370, 4763,
    746,   18560, 15222,
    8796,  12725, 15176,
    10245, 15567, 9991,
    17447, 18373, 21523,
    1473,  5286,  15793,
    17675, 21170, 6699,
    15515, 15942, 8733,
    7047,  11348, 14584,
    20435, 19603, 1961,
    18851, 7069,  11402,
    19180, 6487,  2979,
    2650,  13282, 9040,
    22613, 23266, 4786,
    20832, 3001,  23129,
    3850,  5255,  6601,
    19827, 15438, 13956,
    15798, 4430,  11318,
    4724,  8719,  21209,
    18127, 844,   21379,
    7427,  22987, 10233,
    22949, 8145,  21778,
    7622,  14471, 18874,
    8566,  14340, 3381,
    3373,  419,   11514,
    15127, 917,   13136,
    19375, 18740, 4951,
    960,   2856,  17804,
    662,   8107,  10298,
    10993, 11755, 19142,
    11400, 18818, 521,
    7210,  18658, 8285,
    9496,  20836, 5655,
    14654, 13694, 12705,
    20381, 16473, 7271,
    12796, 3280,  23370,
    13893, 7667,  1736,
    5485,  18321, 7789,
    11242, 18771, 17282,
    817,   21060, 15985,
    666,   20461, 22464,
    7696,  19774, 4324,
    12239, 14014, 4759,
    5011,  10472, 4137,
    3047,  2444,  3818,
    1594,  20382, 538,
    7051,  21874, 1697,
    18539, 26,    21487
  };
};

struct DVB_S2X_TABLE_B8
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 45000;
  static const int LINKS_MIN_CN = 12;
  static const int LINKS_MAX_CN = 13;
  static const int LINKS_TOTAL = 257399;
  static const int DEG_MAX = 11;
  static constexpr int DEG[] = {
    11, 9, 3, 0
  };
  static constexpr int LEN[] = {
    25, 5, 95, 0
  };
  static constexpr int POS[] = {
    11863, 9493,  4143,  12695, 8706,  170,   4967,  798,   9856,  6015,  5125,
    12288, 19567, 18233, 15430, 1671,  3787,  10133, 15709, 7883,  14260, 17039,
    2066,  12269, 14620, 7577,  11525, 19519, 6181,  3850,  8893,  272,   12473,
    8857,  12404, 1136,  19464, 15113, 12598, 12147, 4987,  13843, 12152, 13241,
    1354,  12339, 4308,  23,    12677, 11533, 3187,  11609, 4740,  14630, 19630,
    14508, 10946, 3928,  580,   3526,  17836, 3786,  15739, 13991, 1238,  1071,
    6977,  13222, 13811, 585,   8154,  2579,  8314,  12185, 15876, 7738,  5691,
    12901, 12576, 11597, 4893,  17238, 15556, 8106,  12472, 10455, 14530, 17432,
    8373,  12875, 16582, 14611, 14267, 15093, 2405,  9342,  18326, 12125, 9257,
    5861,  12284, 2441,  13280, 2762,  5076,  17758, 4359,  6156,  18961, 13208,
    4400,  8474,  19629, 19528, 14125, 12780, 12740, 19316, 491,   4761,  1719,
    7270,  6615,  1175,  15848, 6943,  18360, 8905,  13921, 10807, 19688, 18757,
    8312,  12234, 17907, 17254, 7699,  18399, 5508,  12215, 4818,  18107, 2874,
    19496, 13973, 10432, 13445, 15320, 13648, 1501,  10549, 6710,  8897,  1998,
    1575,  12713, 10916, 5316,  13713, 11318, 4055,  5782,  5828,  17981, 3141,
    12177, 10726, 4244,  3138,  15996, 6822,  7495,  5257,  8909,  6180,  10680,
    6650,  1909,  19146, 1038,  17229, 10050, 3051,  9793,  10839, 3532,  14759,
    5337,  8448,  4939,  14792, 7585,  17860, 8612,  2229,  18965, 1519,  2031,
    13845, 9320,  579,   15441, 15050, 752,   8303,  6989,  13360, 12927, 15255,
    17286, 3639,  1733,  16883, 8457,  9475,  2939,  3234,  1993,  8554,  9939,
    6359,  15474, 12100, 6992,  13844, 16988, 7481,  16977, 9052,  9262,  15270,
    7181,  3624,  3814,  16379, 182,   4338,  17627, 3315,  5745,  14093, 15574,
    10709, 18662, 6909,  11248, 5268,  412,   5854,  16782, 16059, 10498, 5061,
    13321, 617,   6734,  3718,  15441, 19241, 17214, 1682,  18641, 18646, 6330,
    7377,  16951, 14477, 6507,  9922,  11464, 2563,  5702,  12691, 10606, 17874,
    7198,  12571, 17617, 4862,  18899, 7100,  8130,  9665,  10779,
    6789,  11459, 17651, 3693,  13332, 3854,  7737,  12589, 15189,
    16260, 14569, 9442,  17890, 18097, 6845,  6960,  1376,  8099,
    12719, 14986, 18999, 14013, 3449,  13618, 14807, 265,   1508,
    11231, 966,   15957, 8315,  3384,  2570,  5700,  10911, 17372,
    153,   8445,  19598,
    7841,  14806, 54,
    2492,  14099, 11718,
    18608, 4278,  333,
    59,    3982,  16986,
    3494,  12496, 2775,
    18320, 10650, 16234,
    9739,  16537, 19706,
    7587,  19072, 18775,
    14133, 12042, 2922,
    229,   17958, 15889,
    5130,  11029, 271,
    5122,  7021,  7067,
    12258, 16611, 9245,
    15493, 15347, 15939,
    741,   12055, 2822,
    12804, 3480,  5690,
    18598, 19273, 16354,
    2569,  16771, 13693,
    15051, 853,   956,
    12256, 2756,  15137,
    15685, 2802,  16479,
    14687, 12470, 3583,
    15473, 17781, 867,
    4843,  6765,  13122,
    11287, 3680,  19101,
    4609,  11385, 13470,
    12353, 6632,  206,
    10984, 3116,  1263,
    9419,  14455, 19438,
    9528,  1808,  435,
    2238,  12870, 10119,
    10868, 8402,  11111,
    11081, 7197,  2667,
    13780, 10759, 19722,
    3768,  3052,  1836,
    446,   1642,  12388,
    16876, 8398,  14485,
    7301,  14815, 13811,
    5678,  10419, 14396,
    1877,  14384, 12817,
    19028, 19589, 6893,
    8725,  6346,  676,
    13611, 12486, 2054,
    11203, 14908, 14692,
    18139, 5334,  1253,
    16233, 9749,  16946,
    18885, 4332,  16306,
    3862,  10395, 13871,
    3747,  8900,  3381,
    13367, 14132, 7220,
    15095, 4219,  15869,
    13519, 18079, 17541,
    19012, 13943, 19471,
    2221,  5710,  13711,
    5185,  3363,  10195,
    9580,  17331, 15360,
    14387, 7596,  9614,
    17336, 6371,  6030,
    14629, 10636, 10159,
    2402,  9170,  4321,
    1040,  5899,  153,
    7710,  7637,  13966,
    10919, 8535,  3791,
    1968,  2567,  4986,
    4166,  8744,  17691,
    540,   10695, 10019,
    17710, 1188,  10821,
    5858,  17012, 17389,
    3083,  17587, 12682,
    5354,  9537,  6807,
    4964,  15942, 9653,
    9000,  17053, 13291,
    11685, 8503,  10777,
    13919, 18155, 9877,
    1625,  15314, 13879,
    18520, 7074,  17061,
    3748,  2752,  7298,
    493,   19163, 14139,
    2260,  18339, 10688,
    8928,  17695, 10276,
    7640,  18547, 3561,
    11275, 5297,  13167,
    19691, 19542, 15725,
    11837, 7273,  11297,
    17873, 7840,  19563,
    8109,  3811,  18417,
    17759, 17623, 13175,
    10041, 4152,  2249,
    18452, 1450,  19309,
    9161,  11651, 4614,
    11547, 14058, 639,
    9384,  3272,  12368,
    5898,  2578,  14635,
    15963, 6733,  11048
  };
};

struct DVB_S2X_TABLE_B9
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 46800;
  static const int LINKS_MIN_CN = 13;
  static const int LINKS_MAX_CN = 14;
  static const int LINKS_TOTAL = 251999;
  static const int DEG_MAX = 10;
  static constexpr int DEG[] = {
    10, 3, 0
  };
  static constexpr int LEN[] = {
    30, 100, 0
  };
  static constexpr int POS[] = {
    2510,  12817, 11890, 13009, 5343,  1775,  10496, 13302, 13348, 17880,
    6766,  16330, 2412,  7944,  2483,  7602,  12482, 6942,  3070,  9231,
    16410, 1766,  1240,  10046, 12091, 14475, 7003,  202,   7733,  11237,
    15562, 4695,  13931, 17100, 11102, 770,   3848,  4216,  7132,  10929,
    16469, 17153, 8177,  8723,  12861, 15948, 2251,  1500,  11526, 8590,
    14813, 3505,  12654, 1079,  11736, 6290,  2299,  17073, 6330,  5997,
    390,   16492, 13989, 1320,  14600, 7061,  6583,  458,   894,   1596,
    8625,  7644,  1322,  16647, 15763, 10439, 8740,  5529,  2969,  13893,
    13425, 13121, 5344,  8739,  4953,  7654,  17848, 9334,  9533,  2731,
    12506, 10992, 8762,  5395,  6424,  11688, 3193,  17601, 14679, 8204,
    5466,  15487, 1642,  6671,  13557, 4074,  7182,  4436,  12398, 12973,
    1958,  13041, 6579,  15984, 3762,  16633, 6113,  11509, 7227,  28,
    17202, 4813,  14024, 15099, 2648,  4476,  2260,  6507,  9930,  9232,
    14186, 14510, 6818,  7665,  12708, 2645,  16687, 13255, 8239,  15884,
    1751,  7847,  17987, 11410, 3345,  17133, 17655, 5027,  1261,  17191,
    8056,  4264,  13915, 8217,  6118,  8072,  6278,  6835,  5038,  15008,
    13625, 2999,  5336,  11687, 13500, 5723,  13903, 766,   6293,  155,
    12316, 14093, 7372,  16846, 15357, 9865,  17869, 1429,  16681, 202,
    15062, 1123,  6454,  17625, 3213,  39,    1669,  1770,  13636, 16555,
    13053, 7597,  11481, 1336,  3343,  11387, 5463,  17830, 13741, 5976,
    1956,  13509, 1664,  16867, 8168,  13421, 17078, 3285,  17138, 1572,
    16711, 1499,  4805,  13584, 14759, 2844,  13110, 7356,  5850,  8330,
    6521,  8528,  14170, 6681,  16992, 12867, 14326, 15227, 4082,  8595,
    16176, 8184,  8572,  1923,  935,   8900,  13020, 6812,  9778,  3391,
    3946,  4711,  15314, 15108, 15634, 4144,  4372,  9207,  10715, 1291,
    16601, 5864,  10968, 4724,  9235,  6988,  3307,  6515,  7004,  16328,
    16217, 4227,  9735,  15857, 5003,  2532,  4451,  8574,  2149,  6908,
    9506,  8949,  12035, 9701,  3124,  14295, 8567,  13614, 5159,  16746,
    2418,  8669,  10921, 5738,  147,   1004,  2692,  9065,  12877, 7559,
    16706, 8511,  10314, 3118,  1219,  7071,  12376, 538,   2389,  3297,
    12492, 10589, 5791,
    13528, 1653,  6618,
    10485, 1307,  4102,
    347,   13580, 4039,
    523,   10311, 10540,
    4183,  6192,  17159,
    11458, 6521,  9632,
    11594, 15791, 10384,
    11654, 126,   11715,
    6265,  34,    5091,
    7271,  13900, 7588,
    3960,  11297, 1612,
    9857,  4695,  16399,
    6423,  2197,  15040,
    4219,  5979,  13959,
    2959,  578,   8404,
    4585,  658,   6474,
    15900, 11357, 5249,
    7414,  8642,  1151,
    4130,  9064,  14537,
    14517, 1356,  3748,
    13865, 12085, 17295,
    9530,  5110,  1570,
    10862, 8458,  15322,
    16355, 1774,  5270,
    1229,  11587, 1632,
    17039, 787,   4703,
    11423, 15388, 6136,
    8413,  9703,  13946,
    4678,  4072,  16702,
    6244,  4690,  7164,
    7238,  14169, 5398,
    8679,  122,   11593,
    10954, 15802, 16427,
    9413,  6717,  16406,
    1027,  17863, 7836,
    655,   8827,  10286,
    4124,  12599, 12482,
    12955, 3121,  15318,
    8343,  16634, 6301,
    13568, 5056,  9920,
    1948,  10,    17395,
    8550,  131,   2151,
    15226, 15994, 13093,
    10966, 15412, 2781,
    13425, 15831, 5346,
    2261,  1067,  6346,
    6625,  1966,  13533,
    10575, 4483,  5761,
    14366, 2019,  14426,
    16746, 1450,  4830,
    13109, 7358,  7942,
    15376, 7284,  14035,
    14341, 12625, 3306,
    9375,  7529,  1537,
    13831, 13447, 4549,
    15658, 15299, 8238,
    4005,  13264, 9766,
    4715,  6285,  15383,
    1262,  12883, 15434,
    11123, 14975, 3434,
    5307,  1112,  16967,
    12163, 12009, 3681,
    9174,  13153, 10344,
    13456, 13197, 9562,
    1785,  7549,  15347,
    663,   9748,  9436,
    4961,  11903, 11574,
    16248, 6238,  666,
    11426, 13748, 14763,
    14431, 1443,  2069,
    2376,  8154,  14978,
    13140, 1289,  9046,
    1159,  300,   3319,
    11510, 7769,  15877,
    6430,  14946, 6856,
    8868,  15622, 12458,
    4867,  6622,  6850,
    14721, 11241, 12760,
    14233, 9874,  17682,
    16677, 13195, 15086,
    11155, 7067,  14160,
    12741, 14379, 8922,
    1930,  17055, 11752,
    12361, 6523,  9568,
    12165, 5636,  16011,
    11389, 4754,  9916,
    15903, 15542, 8301,
    12073, 4918,  9754,
    16544, 17907, 14814,
    10839, 1401,  5107,
    12320, 1095,  8592,
    15088, 6521,  12015,
    14802, 3901,  8920,
    17932, 2990,  1643,
    5102,  3870,  2045,
    540,   2643,  2287,
    5844,  2482,  9471,
    10428, 637,   3629,
    8814,  7277,  2678
  };
};

struct DVB_S2X_TABLE_B10
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 50400;
  static const int LINKS_MIN_CN = 17;
  static const int LINKS_MAX_CN = 18;
  static const int LINKS_TOTAL = 259199;
  static const int DEG_MAX = 12;
  static constexpr int DEG[] = {
    12, 5, 3, 0
  };
  static constexpr int LEN[] = {
    20, 20, 100, 0
  };
  static constexpr int POS[] = {
    13057, 12620, 2789,  3553,  6763,  8329,  3333,  7822,  10490, 13943, 4101,  2556,
    658,   11386, 2242,  7249,  5935,  2148,  5291,  11992, 3222,  2957,  6454,  3343,
    93,    1205,  12706, 11406, 9017,  7834,  5358,  13700, 14295, 4152,  6287,  4249,
    6958,  2768,  8087,  1759,  11889, 4474,  3925,  4004,  14392, 8923,  6962,  4822,
    6719,  5436,  1905,  10228, 5059,  4892,  12448, 26,    12891, 10607, 12210, 10424,
    8368,  10667, 9045,  7694,  13097, 3555,  4831,  411,   8539,  6527,  12753, 11530,
    4960,  6647,  13969, 3556,  9997,  7898,  2134,  9931,  3749,  4305,  11242, 10410,
    9125,  9075,  9916,  12370, 8720,  6056,  8128,  5425,  979,   3421,  5660,  9473,
    4348,  11979, 5985,  395,   11255, 13878, 7797,  4962,  13519, 13323, 7596,  5520,
    2852,  8519,  3022,  9432,  3564,  9467,  8569,  12235, 11837, 5031,  4246,  2,
    4081,  3630,  1619,  2525,  3773,  11491, 14076, 9834,  3618,  2008,  4694,  6948,
    7684,  9642,  5970,  1679,  13207, 12368, 262,   7401,  11471, 2861,  5620,  4754,
    7474,  10418, 1422,  10960, 13852, 988,   13465, 6415,  86,    2432,  7595,  12239,
    8539,  11749, 8794,  6350,  1947,  13325, 13061, 7385,  13017, 2536,  13121, 15,
    7944,  13831, 5126,  9938,  11758, 335,   980,   9736,  12143, 5753,  4533,  10814,
    10706, 12618, 6949,  2684,  4107,  14388, 11372, 6321,  13832, 9190,  2838,  13860,
    10830, 1947,  13803, 3257,  2677,  406,   8400,  10536, 12911, 3629,  251,   9784,
    13343, 13304, 301,   801,   6456,  6351,  6155,  6763,  3812,  11337, 8446,  9306,
    524,   5573,  503,   10544, 8990,  673,   2309,  12376, 466,   11441, 960,   1557,
    4403,  3564,  1732,  13453, 12054, 8941,  1383,  12424, 4347,  9830,  3553,  5158,
    2025,  4282,  4983,  13553, 10776,
    11833, 13099, 5078,  4420,  3527,
    1544,  7474,  2780,  7749,  4153,
    11189, 520,   8463,  12230, 7712,
    10409, 13367, 2604,  2966,  9248,
    1412,  420,   3507,  9818,  7955,
    1122,  12483, 9375,  10232, 9456,
    2799,  7033,  10404, 4495,  12059,
    2569,  5970,  6262,  2199,  8045,
    11724, 511,   12693, 12855, 9597,
    756,   12900, 13391, 13623, 10683,
    2095,  13479, 1488,  9469,  11142,
    13849, 1356,  10776, 3530,  9866,
    13449, 14225, 2072,  12772, 9461,
    6466,  6181,  6502,  401,   7439,
    4631,  1086,  3062,  11789, 11811,
    6788,  14007, 2270,  14132, 2764,
    4643,  10272, 11316, 2608,  8511,
    5221,  9028,  2736,  7223,  1051,
    1974,  2737,  6739,  13904, 6156,
    5,     9082,  3915,
    2400,  7195,  3413,
    606,   221,   8171,
    4548,  1267,  5310,
    12795, 2160,  8305,
    10563, 3507,  12190,
    6325,  2499,  9717,
    9251,  6046,  13308,
    11704, 10834, 11241,
    4777,  3774,  11533,
    12487, 10365, 6852,
    58,    2650,  2027,
    7248,  13704, 5573,
    12777, 7834,  8561,
    7906,  8121,  7774,
    554,   3105,  6000,
    11198, 3586,  10410,
    9002,  4094,  11297,
    12058, 1037,  13638,
    1258,  12917, 11078,
    2430,  51,    10276,
    7841,  9451,  10236,
    11045, 1058,  10352,
    9629,  9428,  86,
    8146,  1255,  3802,
    10820, 6337,  4199,
    9364,  7723,  1139,
    438,   6445,  583,
    2683,  5358,  10730,
    8471,  3061,  13380,
    3005,  2840,  4754,
    8210,  1814,  11502,
    8667,  14258, 5985,
    8407,  13336, 10970,
    6363,  11715, 5053,
    104,   13618, 13817,
    6562,  4087,  294,
    1742,  10528, 4626,
    6607,  2692,  1587,
    11097, 8361,  2788,
    13451, 3541,  823,
    4060,  13604, 9816,
    157,   6106,  1062,
    8853,  5159,  4270,
    9352,  13164, 2919,
    7526,  5174,  12501,
    12634, 13077, 5129,
    5750,  1568,  6281,
    269,   5985,  10973,
    8518,  9415,  1028,
    4722,  13275, 634,
    12113, 7104,  7436,
    12787, 1032,  5936,
    3425,  11526, 10797,
    784,   9208,  15,
    11223, 12849, 4913,
    10635, 3553,  8852,
    11749, 10619, 3532,
    4080,  9831,  9219,
    6560,  6049,  6111,
    1304,  11770, 12585,
    13209, 8589,  11287,
    2887,  10699, 14307,
    4752,  456,   4073,
    1175,  13156, 4894,
    12756, 3237,  6279,
    10125, 7074,  2344,
    7533,  7103,  5226,
    4000,  4425,  12173,
    10056, 5312,  1599,
    7445,  8696,  12533,
    11509, 14050, 2483,
    12405, 2876,  5033,
    4512,  4955,  5627,
    5572,  5099,  10987,
    10665, 404,   3082,
    2075,  1583,  13454,
    5666,  7228,  524,
    13290, 7634,  418,
    9006,  7368,  4181,
    9447,  3674,  8171,
    9355,  10211, 9342,
    12572, 3681,  3322,
    3295,  186,   7491,
    7926,  212,   5241,
    5479,  1654,  8097,
    5078,  423,   4817,
    1357,  12780, 3664,
    11900, 402,   13108,
    299,   7166,  12008,
    5750,  3041,  5618,
    8357,  1229,  8884,
    3713,  8791,  13375,
    4390,  6302,  568,
    1009,  4440,  10003,
    1209,  11978, 11711,
    1803,  9838,  13537,
    11318, 9750,  12421,
    2388,  3021,  7880,
    7220,  1062,  6871
  };
};

struct DVB_S2X_TABLE_B11
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 32400;
  static const int LINKS_MIN_CN = 6;
  static const int LINKS_MAX_CN = 8;
  static const int LINKS_TOTAL = 255599;
  static const int DEG_MAX = 18;
  static constexpr int DEG[] = {
    18, 3, 16, 9, 6, 0
  };
  static constexpr int LEN[] = {
    10, 65, 5, 5, 5, 0
  };
  static constexpr int POS[] = {
    708,   1132,  2120,  3208,  3879,  8320,  11948, 14185, 15214, 16594, 17849, 19766, 23814, 26175, 27579, 28052, 31512, 32029,
    2720,  2753,  3716,  6133,  8020,  8305,  9429,  10337, 15503, 19905, 20127, 21963, 25624, 27221, 27907, 27945, 29833, 30270,
    4011,  7807,  11547, 12782, 13040, 14599, 14836, 15218, 17890, 18922, 19668, 20267, 20714, 22151, 24373, 25261, 26101, 27627,
    136,   5341,  7661,  12779, 13392, 13922, 14151, 15054, 16544, 17232, 17478, 19895, 22814, 23820, 25014, 26346, 27575, 31803,
    3456,  3485,  5839,  8312,  8423,  9796,  10018, 11520, 13336, 15520, 19928, 22019, 23144, 25339, 27406, 28729, 29527, 31406,
    1779,  3634,  3930,  4138,  5449,  5924,  6776,  7658,  8703,  11542, 13133, 15086, 16334, 21876, 23860, 24281, 28854, 29557,
    697,   868,   1345,  6257,  7400,  8220,  9761,  11501, 15828, 16175, 16865, 17251, 19298, 21907, 24033, 24175, 24497, 30965,
    991,   1845,  3173,  5609,  11275, 12666, 12903, 14409, 15359, 17537, 17923, 19821, 20323, 21561, 21663, 23378, 25371, 28487,
    446,   3096,  3604,  3688,  6864,  7296,  8128,  9957,  11568, 13204, 14502, 16280, 17655, 19695, 25953, 28006, 31006, 31160,
    3592,  5443,  5450,  8875,  10529, 10721, 15241, 16485, 16905, 17980, 19685, 21639, 21938, 25038, 25322, 26073, 27072, 32305,
    2539,  11274, 18981,
    8099,  17427, 18613,
    7872,  12547, 14776,
    17272, 31146, 31476,
    12171, 20651, 28060,
    5845,  20532, 24021,
    2102,  9627,  12746,
    4406,  13397, 16767,
    7707,  19199, 20221,
    10278, 11526, 13739,
    8902,  13337, 25524,
    5385,  6939,  15968,
    1686,  2985,  18124,
    21285, 22673, 25722,
    4833,  4895,  7657,
    14073, 19518, 27540,
    2832,  27137, 32072,
    8936,  19641, 24786,
    1696,  4408,  9480,
    3941,  9228,  25043,
    1328,  7460,  25237,
    11251, 21361, 23890,
    10450, 10762, 26795,
    1544,  19244, 22553,
    9564,  24279, 27073,
    12214, 15608, 30892,
    6316,  29252, 30504,
    3667,  7784,  26600,
    11435, 20278, 31840,
    7211,  21620, 23899,
    17193, 18368, 23536,
    3750,  18865, 29121,
    2088,  7648,  20893,
    12231, 28534, 28933,
    6316,  14450, 31885,
    2672,  8770,  26920,
    17337, 18624, 26359,
    3098,  17939, 27134,
    1084,  24695, 31846,
    5110,  9148,  10203,
    3943,  19212, 31745,
    6,     6061,  29453,
    2271,  9151,  27015,
    386,   2747,  26182,
    13129, 15456, 30698,
    126,   10222, 23935,
    11008, 17244, 19711,
    17752, 22103, 31308,
    11293, 20670, 23940,
    11627, 14829, 19929,
    2163,  5918,  23666,
    28627, 28709, 31369,
    3161,  3209,  26227,
    1597,  25322, 30792,
    2083,  15971, 16193,
    4795,  10875, 11668,
    12984, 28077, 28863,
    1851,  9750,  30222,
    2252,  8660,  8984,
    6764,  8375,  15896,
    5074,  16399, 31725,
    11507, 15519, 30828,
    3196,  7975,  17614,
    477,   11889, 17748,
    2420,  2852,  25451,
    3683,  4741,  6944,  8199,  8808,  13142, 14071, 15830, 17216, 18589, 20284, 21652, 22542, 24994, 25719, 26187,
    1534,  4620,  4899,  6461,  6737,  9082,  10679, 11544, 16118, 20173, 20662, 21526, 22646, 24778, 29790, 30044,
    2343,  2547,  5620,  6523,  8188,  9029,  14162, 15517, 24143, 25078, 25163, 26616, 28731, 30201, 30889, 32034,
    1876,  4541,  5147,  9087,  12853, 12967, 13887, 16009, 19722, 20475, 21245, 21908, 22547, 25790, 27330, 27640,
    1706,  3168,  6471,  7382,  10195, 11568, 11770, 17719, 19484, 19572, 20375, 20470, 23332, 24372, 30654, 31230,
    996,   3297,  3587,  4313,  12243, 12456, 17510, 20492, 29071,
    7114,  7312,  7937,  8379,  8580,  11514, 13657, 23774, 24569,
    98,    600,   745,   1223,  4298,  6362,  12544, 21620, 28786,
    2585,  4021,  10785, 11294, 20707, 25033, 25465, 26990, 30713,
    1895,  4346,  10404, 16998, 17073, 24131, 24891, 26056, 26444,
    4265,  8641,  8937,  13462, 23815, 26205,
    1468,  2578,  3070,  6258,  8221,  10414,
    5186,  8832,  11589, 25697, 29629, 32022,
    15971, 17493, 18659, 19082, 22089, 26779,
    1597,  1691,  10499, 13815, 18943, 27396
  };
};

struct DVB_S2X_TABLE_B12
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 34560;
  static const int LINKS_MIN_CN = 7;
  static const int LINKS_MAX_CN = 9;
  static const int LINKS_TOTAL = 266759;
  static const int DEG_MAX = 20;
  static constexpr int DEG[] = {
    20, 14, 12, 3, 4, 3, 0
  };
  static constexpr int LEN[] = {
    10, 5, 5, 55, 15, 6, 0
  };
  static constexpr int POS[] = {
    551,   1039,  1564,  1910,  3126,  4986,  5636,  5661,  7079,  9384,  9971,  10460, 11259, 14150, 14389, 14568, 14681, 21772, 27818, 28671,
    384,   1734,  1993,  3890,  4594,  6655,  7483,  8508,  8573,  8720,  10388, 15541, 17306, 18411, 18606, 19048, 19273, 21492, 21970, 29495,
    1104,  2877,  10668, 11101, 12647, 13994, 14598, 15653, 17265, 18435, 18848, 18949, 19209, 19312, 19414, 19465, 24927, 26613, 28809, 28865,
    1185,  6439,  6519,  7790,  8609,  8826,  9934,  16363, 16596, 18088, 18757, 20318, 20446, 21123, 23938, 24235, 25120, 25469, 26036, 28043,
    53,    3630,  4384,  4619,  7805,  8822,  12208, 13312, 14269, 16435, 17925, 18079, 18689, 19042, 21541, 22729, 26066, 27666, 28759, 30107,
    1926,  2549,  9816,  10544, 10980, 12468, 13026, 15658, 15670, 15975, 17200, 22364, 22775, 23343, 24289, 24956, 26230, 28040, 28348, 29718,
    1243,  1673,  4181,  6080,  7829,  8259,  9294,  10556, 10905, 14071, 18080, 18203, 18537, 19707, 24143, 24442, 25877, 27072, 29158, 29690,
    1834,  2523,  5973,  6006,  8054,  8843,  10141, 11668, 12956, 13202, 18659, 21757, 24258, 24675, 24779, 25924, 26980, 27008, 29229, 29899,
    3790,  5716,  7345,  7381,  9081,  9679,  13629, 18038, 19858, 21248, 21348, 22251, 24410, 26790, 27643, 27955, 27996, 28271, 29638, 30198,
    158,   545,   1178,  5181,  8585,  9927,  10721, 11361, 11640, 12552, 12579, 14641, 14928, 15609, 17388, 20551, 24516, 26834, 29850, 30201,
    1076,  3011,  5636,  6947,  7236,  7511,  10629, 16795, 20770, 22796, 22853, 24219, 28516, 29151,
    678,   2553,  3403,  6515,  7079,  8767,  10228, 10791, 10832, 16113, 18718, 21328, 25762, 26925,
    8536,  8706,  9471,  9854,  11186, 12220, 13261, 14034, 14897, 25068, 26338, 26427, 28784, 29281,
    2634,  3562,  11652, 13206, 15185, 17051, 19666, 21058, 23107, 23869, 24590, 25311, 25498, 28891,
    2440,  4164,  7040,  7591,  9321,  9796,  11026, 12204, 13478, 17852, 22183, 25257, 28756, 28813,
    390,   2209,  3095,  4554,  5755,  12285, 12314, 14372, 14957, 15711, 22946, 27713,
    207,   418,   3856,  8719,  11708, 15353, 20717, 21639, 23269, 26732, 27613, 28334,
    2805,  3795,  7105,  8130,  10330, 13888, 15132, 16415, 17093, 23277, 25191, 27630,
    1381,  1955,  3689,  6290,  6342,  9573,  13751, 14633, 16298, 18206, 24248, 24893,
    5991,  8976,  9763,  12308, 12566, 15265, 17068, 21084, 22475, 24371, 25171, 28008,
    8962,  17060, 22260,
    1335,  6691,  14738,
    4118,  10315, 23113,
    4643,  10970, 28091,
    1195,  3683,  26231,
    7486,  17403, 22471,
    7328,  10110, 19764,
    4630,  13732, 28298,
    6139,  19386, 26009,
    19712, 20670, 27993,
    9317,  18037, 19324,
    4422,  4510,  10290,
    1396,  22324, 28601,
    1404,  5708,  22352,
    14783, 17214, 19359,
    7996,  20133, 20614,
    6219,  17582, 24404,
    2481,  20505, 28124,
    4569,  10863, 28776,
    941,   7516,  11474,
    24878, 27151, 28125,
    9053,  10186, 28126,
    1376,  19327, 26055,
    5965,  14239, 16875,
    17434, 18098, 25044,
    5785,  14385, 22243,
    15144, 16981, 25171,
    13671, 25732, 25961,
    95,    20461, 20558,
    4321,  19572, 26175,
    3637,  17351, 18683,
    18096, 23926, 27359,
    7914,  13217, 23098,
    9822,  11342, 26728,
    7591,  18615, 28044,
    112,   16897, 19127,
    10087, 18516, 27292,
    2762,  3323,  21677,
    4533,  20728, 23071,
    7164,  7180,  15097,
    2061,  6184,  20598,
    6310,  13462, 26714,
    8189,  9345,  15315,
    3319,  17370, 24726,
    5217,  9271,  11984,
    10245, 13623, 16621,
    5537,  22325, 22692,
    1592,  19859, 25578,
    7005,  15625, 22572,
    1474,  14387, 28592,
    153,   4254,  20080,
    8709,  25107, 25135,
    11663, 17264, 25598,
    7135,  17226, 18698,
    109,   2603,  26360,
    1408,  9608,  11927, 14872,
    4187,  10410, 27776, 30125,
    1008,  4409,  14938, 20458,
    3641,  12480, 20141, 22605,
    10453, 22378, 24993, 30002,
    19957, 24800, 25196, 29823,
    2431,  2929,  5824,  12333,
    395,   4393,  15571, 22019,
    15040, 24712, 28275, 28794,
    3735,  11988, 13828, 13949,
    4301,  5829,  24675, 26696,
    6406,  8140,  9438,  17274,
    4272,  17638, 19278, 24961,
    3271,  11030, 11481, 28624,
    3792,  5394,  7566,  17557,
    6505,  11108, 20811,
    2722,  28613, 28991,
    11472, 25911, 30170,
    2355,  13553, 25490,
    3284,  13373, 17330,
    9046,  16513, 22243
  };
};

struct DVB_S2X_TABLE_B13
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 36000;
  static const int LINKS_MIN_CN = 7;
  static const int LINKS_MAX_CN = 9;
  static const int LINKS_TOTAL = 255599;
  static const int DEG_MAX = 16;
  static constexpr int DEG[] = {
    16, 3, 15, 10, 8, 3, 0
  };
  static constexpr int LEN[] = {
    10, 65, 5, 5, 5, 10, 0
  };
  static constexpr int POS[] = {
    690,   1366,  2591,  2859,  4224,  5842,  7310,  8181,  12432, 15667, 15717, 16935, 17583, 19696, 20573, 21269,
    2488,  2890,  6630,  6892,  11563, 12518, 15560, 16798, 18355, 18746, 19165, 19295, 21567, 23505, 23617, 23629,
    321,   2844,  2894,  3986,  4538,  7599,  7816,  9831,  10247, 11556, 16068, 17249, 18194, 23043, 23100, 25938,
    2503,  2827,  4771,  5929,  6400,  7437,  8054,  10897, 11633, 14404, 16133, 17101, 24425, 24973, 25086, 25802,
    1462,  2099,  3910,  5131,  5352,  8832,  9495,  9624,  10796, 12906, 13903, 14724, 14946, 17708, 21034, 26612,
    260,   523,   1427,  3435,  4517,  9494,  12594, 12688, 12726, 14163, 16537, 17424, 18424, 20321, 25101, 28269,
    2131,  2407,  4820,  7167,  11783, 15249, 15982, 18761, 22162, 24593, 24971, 25831, 26351, 27005, 28348, 28793,
    2089,  5829,  6119,  7505,  7758,  8122,  9870,  12107, 16656, 17582, 19115, 23738, 27646, 27692, 27862, 28356,
    2714,  3288,  3337,  5013,  6210,  8080,  9348,  12919, 13458, 13621, 18015, 21024, 24044, 24761, 25610, 26317,
    1305,  3402,  5830,  7095,  8852,  9580,  9793,  11157, 12725, 14355, 20659, 21400, 22289, 23823, 26250, 27006,
    12936, 15702, 23593,
    3616,  17219, 18621,
    1234,  12759, 26749,
    396,   3017,  18360,
    10664, 21597, 26165,
    12986, 14553, 24818,
    18403, 21213, 28302,
    6515,  18331, 19413,
    19649, 26219, 27483,
    2538,  15793, 17528,
    7871,  9374,  20785,
    5494,  8084,  21558,
    6691,  7770,  14306,
    3247,  7417,  18827,
    11615, 15987, 20081,
    1527,  15272, 26042,
    10540, 15548, 23849,
    223,   2601,  25888,
    2395,  21465, 28501,
    19703, 21589, 27252,
    12832, 15726, 25300,
    3750,  10030, 16124,
    401,   6474,  28682,
    4424,  19876, 25563,
    590,   12853, 14779,
    25185, 25539, 25920,
    6857,  23329, 25764,
    3467,  23205, 23751,
    9278,  24364, 25033,
    14956, 19104, 22487,
    21856, 26163, 27130,
    2067,  17357, 22055,
    50,    14414, 19142,
    306,   445,   16437,
    2260,  13892, 17608,
    8893,  12230, 16916,
    5943,  8921,  16380,
    5079,  15385, 21951,
    5108,  6038,  8513,
    2126,  6749,  7330,
    3814,  11941, 22949,
    2301,  15416, 26731,
    3498,  14463, 20417,
    2062,  10434, 10746,
    18128, 18960, 23452,
    13080, 13129, 27193,
    18818, 24995, 27087,
    7198,  11948, 23135,
    17206, 18524, 25811,
    5202,  10030, 10076,
    8497,  23410, 23991,
    1553,  1968,  13135,
    4426,  10786, 23259,
    92,    7941,  23045,
    6356,  14028, 23104,
    18319, 20286, 22984,
    5778,  25335, 26191,
    662,   15922, 27478,
    2920,  9733,  18974,
    15337, 27509, 27519,
    8659,  25028, 27723,
    14865, 24564, 26361,
    1383,  21234, 21770,
    10767, 25752, 25843,
    7717,  14536, 24248,
    278,   2803,  2966,  3547,  4128,  4829,  4981,  6699,  6716,  14183, 14239, 15939, 16996, 19694, 20073,
    3022,  3087,  10039, 10174, 11403, 12146, 13689, 14934, 17765, 18121, 18936, 21818, 27202, 27532, 28192,
    817,   3888,  4102,  9441,  10165, 10941, 18131, 20028, 22305, 23832, 25225, 26228, 27208, 27245, 27390,
    6346,  7992,  9053,  11187, 12124, 16435, 16850, 21269, 21580, 22096, 23700, 24751, 26264, 27318, 27576,
    1440,  3291,  5755,  12247, 12272, 15394, 15659, 15764, 16338, 17373, 18840, 19597, 19812, 22415, 27062,
    937,   3118,  8745,  10933, 12703, 13906, 14113, 21442, 21539, 28140,
    247,   2465,  2918,  3189,  5886,  11451, 16862, 17458, 20908, 26608,
    58,    10104, 11815, 14429, 16531, 19797, 24071, 26021, 28000, 28489,
    4367,  5710,  7855,  14203, 18071, 19336, 19880, 20166, 26774, 28554,
    191,   1085,  4068,  7452,  11739, 15962, 17501, 19172, 24130, 28476,
    4961,  19716, 19964, 23479, 24004, 24340, 25537, 27930,
    1688,  2235,  10464, 15112, 15134, 25143, 25910, 28689,
    765,   11839, 17427, 19754, 21445, 22034, 23493, 25296,
    277,   7947,  9952,  12228, 12595, 16563, 19758, 21721,
    1575,  2652,  5226,  8159,  16624, 25446, 26417, 26722,
    10571, 17389, 22602,
    1331,  7875,  18475,
    11738, 13853, 23914,
    9412,  11361, 26507,
    16877, 23022, 27060,
    2627,  16649, 22369,
    9446,  14752, 28540,
    4496,  7705,  22247,
    2439,  19741, 28550,
    6605,  12623, 26774
  };
};

struct DVB_S2X_TABLE_B14
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 37440;
  static const int LINKS_MIN_CN = 8;
  static const int LINKS_MAX_CN = 10;
  static const int LINKS_TOTAL = 271439;
  static const int DEG_MAX = 18;
  static constexpr int DEG[] = {
    18, 14, 3, 7, 4, 3, 0
  };
  static constexpr int LEN[] = {
    10, 10, 55, 5, 10, 14, 0
  };
  static constexpr int POS[] = {
    2087,  6318,  7314,  8327,  9453,  12989, 13156, 13763, 13819, 16963, 18495, 19352, 20510, 20651, 23379, 23847, 23953, 26469,
    2680,  5652,  6816,  7854,  10673, 11431, 12379, 14570, 17081, 19341, 20749, 21056, 22990, 23012, 24902, 25547, 26718, 27284,
    2142,  3940,  4724,  4791,  6617,  6800,  9349,  9380,  10073, 10147, 11750, 12900, 16044, 16156, 17769, 21600, 21669, 22554,
    1588,  3097,  4277,  6181,  6737,  8974,  9793,  12215, 12814, 17953, 18270, 21808, 22625, 24390, 25429, 25750, 25967, 26391,
    561,   5825,  7106,  7166,  7475,  11844, 12905, 13559, 13978, 14176, 14437, 16070, 16587, 19792, 20187, 23754, 26070, 27232,
    673,   1783,  4046,  4887,  5596,  8390,  9229,  12315, 14252, 14415, 14529, 17837, 20013, 20032, 22201, 22487, 24412, 25792,
    1261,  1910,  3767,  6244,  7050,  7367,  9230,  12972, 13229, 13472, 14287, 14494, 16776, 20523, 20738, 21591, 23622, 25206,
    1618,  2106,  3640,  6304,  7984,  8158,  9072,  9311,  12618, 15746, 16985, 18923, 20959, 21267, 23375, 24052, 24260, 24827,
    6256,  6931,  7276,  7356,  7832,  12284, 12405, 13083, 13602, 14750, 19021, 20026, 22661, 23283, 24427, 25301, 25982, 27279,
    2432,  3076,  3399,  5305,  7370,  8406,  8826,  9237,  10537, 15492, 15606, 15619, 16515, 17562, 19550, 22525, 24389, 25740,
    157,   296,   422,   467,   7125,  9849,  9997,  15376, 15506, 16119, 17153, 17857, 18639, 23136,
    1275,  1439,  6162,  8258,  9031,  10207, 10472, 16004, 16641, 17140, 21342, 22191, 23200, 25753,
    110,   1073,  6460,  9208,  10520, 15833, 15951, 17494, 18614, 19970, 20537, 21512, 21796, 22135,
    3771,  5399,  5885,  7905,  8302,  8614,  10205, 11133, 11459, 16044, 22701, 25170, 26255, 27086,
    1597,  2640,  2741,  3790,  5107,  7470,  9160,  12078, 12350, 14020, 18877, 19507, 22658, 24290,
    4957,  5961,  6263,  8201,  8579,  9392,  10133, 11712, 14757, 15678, 15718, 19528, 25107, 25122,
    870,   4508,  5944,  7360,  11724, 15003, 16387, 19543, 19893, 20189, 21942, 23740, 25686, 25849,
    131,   2044,  6731,  7619,  7787,  9109,  9841,  10006, 10275, 13687, 16522, 18212, 24457, 25197,
    504,   1863,  4246,  5075,  5448,  6296,  6930,  11792, 13736, 14588, 16340, 17102, 17807, 26621,
    1137,  1168,  2366,  3818,  4311,  6806,  8583,  10850, 12198, 12357, 21357, 23243, 23568, 25003,
    2353,  11886, 22548,
    1680,  9112,  12175,
    15126, 16642, 27030,
    5571,  5719,  19190,
    6232,  13413, 19728,
    8197,  12068, 17122,
    3220,  3476,  24534,
    1630,  4345,  23890,
    19815, 20676, 24443,
    12761, 14080, 15937,
    41,    7963,  23895,
    7658,  13020, 27128,
    1017,  1447,  3285,
    2268,  22921, 26255,
    261,   13889, 14175,
    13925, 18777, 18987,
    15136, 24523, 27156,
    12008, 18484, 19299,
    4304,  9857,  15134,
    2966,  9278,  9737,
    5469,  15449, 22259,
    11359, 14186, 20635,
    16453, 21262, 23629,
    5613,  7100,  11104,
    3959,  14714, 18116,
    7465,  13803, 24660,
    3939,  7615,  9891,
    12249, 16491, 22373,
    8734,  14253, 25616,
    5781,  18719, 23894,
    6208,  6703,  14626,
    1284,  4730,  23920,
    3920,  13167, 13366,
    3925,  7147,  27268,
    1926,  12777, 21092,
    675,   8186,  22557,
    487,   9590,  12433,
    7090,  16031, 27037,
    3083,  10445, 22950,
    380,   4663,  7195,
    960,   12754, 20597,
    1790,  12476, 24250,
    11307, 22121, 22266,
    3256,  7625,  12046,
    11034, 11800, 17383,
    6142,  14781, 19944,
    2679,  11106, 22783,
    7769,  11060, 15178,
    7384,  9851,  20205,
    14813, 19271, 22600,
    3085,  11637, 19934,
    6518,  7995,  19382,
    11070, 15498, 26380,
    248,   16291, 23824,
    4989,  19436, 26642,
    5954,  16039, 16042, 20349, 21326, 24656, 25427,
    2558,  6628,  9167,  16825, 19069, 20808, 22617,
    317,   13859, 14069, 16104, 18835, 20040, 26633,
    2866,  4153,  5875,  11698, 15287, 19719, 25808,
    536,   6955,  9735,  16098, 20694, 24675, 26881,
    25,    7316,  9961,  21037,
    7823,  19458, 20404, 25186,
    7142,  11057, 17748, 24788,
    11315, 12358, 21583, 21836,
    8995,  9326,  12826, 25981,
    2281,  10560, 10674, 19801,
    5001,  6655,  26231, 26542,
    800,   15131, 18482, 22621,
    9060,  12257, 24786, 25188,
    3462,  17201, 18960, 24462,
    17631, 26360, 26425,
    12774, 20967, 21391,
    14701, 20696, 26807,
    5931,  13144, 14022,
    128,   16460, 26300,
    801,   9487,  25937,
    6153,  11296, 23054,
    2749,  14434, 20049,
    1732,  7646,  20402,
    3839,  11031, 26022,
    2159,  20918, 21407,
    285,   13785, 24234,
    1977,  3899,  7972,
    4120,  19101, 23719
  };
};

struct DVB_S2X_TABLE_B15
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 41760;
  static const int LINKS_MIN_CN = 10;
  static const int LINKS_MAX_CN = 12;
  static const int LINKS_TOTAL = 270359;
  static const int DEG_MAX = 18;
  static constexpr int DEG[] = {
    18, 12, 10, 3, 10, 4, 3, 0
  };
  static constexpr int LEN[] = {
    10, 5, 5, 55, 5, 10, 26, 0
  };
  static constexpr int POS[] = {
    3880,  4377,  6147,  6219,  7873,  8180,  9157,  10311, 10862, 15393, 16522, 17318, 17609, 18398, 19290, 19293, 20296, 22244,
    1056,  1647,  5119,  5201,  6991,  10038, 10843, 11614, 11901, 12026, 14631, 16749, 16772, 16915, 17331, 19235, 19877, 22763,
    501,   2634,  2812,  3085,  3242,  4952,  5087,  8334,  8838,  8993,  12601, 12849, 13142, 13852, 14416, 14444, 15122, 20692,
    343,   1183,  5708,  6798,  6951,  9154,  9160,  9508,  9884,  11874, 11984, 13737, 14933, 17208, 21253, 21822, 22723, 22898,
    3332,  4384,  5137,  8527,  8749,  10414, 10536, 12759, 14769, 16121, 19255, 19326, 20283, 20352, 20629, 20827, 21226, 22087,
    60,    3866,  3895,  4116,  5631,  6985,  7205,  7681,  10031, 12825, 14266, 14644, 16396, 17010, 20221, 20268, 21729, 21752,
    61,    1112,  1392,  1826,  1910,  4370,  5910,  6660,  6943,  7859,  9628,  10213, 10701, 12615, 14453, 17123, 18667, 20688,
    880,   2397,  2669,  7767,  9683,  9705,  10430, 13995, 15972, 16217, 17187, 18246, 18869, 21077, 21884, 21897, 21927, 22475,
    748,   1029,  1446,  2912,  6784,  6926,  7710,  11674, 12014, 12409, 12438, 14411, 14723, 15953, 16020, 17496, 18230, 19547,
    1151,  2295,  2975,  3082,  6502,  8269,  9130,  9629,  10018, 10235, 14871, 15834, 17396, 17777, 19138, 21871, 22035, 22927,
    650,   789,   4632,  4777,  5004,  8796,  13479, 14917, 16826, 16926, 19144, 20754,
    1693,  4906,  5777,  5907,  6472,  9792,  11824, 16134, 16406, 16440, 18395, 22338,
    5172,  5920,  7987,  9381,  10573, 11382, 11512, 13074, 15755, 16591, 19518, 20968,
    1409,  2508,  6542,  8993,  10660, 13691, 14724, 15597, 19641, 20809, 21160, 22767,
    895,   1446,  3298,  4018,  5250,  6269,  8897,  9049,  12052, 15311, 16199, 20677,
    1,     774,   1248,  2362,  7019,  8430,  14321, 14444, 19664, 21475,
    1714,  1973,  4155,  7536,  7975,  9323,  9997,  10627, 20959, 21824,
    586,   1907,  2153,  5914,  7407,  8311,  8900,  10060, 18502, 18818,
    805,   1897,  3019,  7404,  10055, 11779, 11982, 15319, 21802, 21913,
    5276,  5470,  8725,  11080, 11939, 17057, 17960, 18930, 19814, 22546,
    1227,  10140, 18999,
    849,   17266, 18364,
    4436,  6167,  14942,
    11103, 14219, 19204,
    6738,  10043, 20614,
    1885,  3173,  13934,
    2088,  11344, 20627,
    2668,  6722,  20336,
    11274, 18439, 21280,
    2223,  15960, 21282,
    6555,  7521,  11051,
    9037,  11912, 22911,
    12952, 19885, 21298,
    13696, 16793, 17228,
    1040,  4501,  6170,
    1025,  4522,  21287,
    1213,  3817,  12857,
    1392,  6601,  12468,
    835,   16504, 19633,
    634,   16014, 19619,
    6166,  17343, 21067,
    6583,  16107, 18382,
    5481,  9653,  18543,
    14634, 15406, 16179,
    1952,  7810,  16892,
    2271,  12635, 20456,
    8838,  10469, 20629,
    11400, 16788, 18756,
    230,   11373, 17104,
    17204, 17733, 20707,
    8465,  13092, 22087,
    8684,  8983,  10130,
    11468, 13469, 21366,
    9342,  10115, 19130,
    3184,  9535,  11802,
    13495, 16231, 19609,
    8911,  12617, 15190,
    508,   8674,  19422,
    4059,  6197,  8449,
    9440,  11028, 13468,
    1779,  9358,  13459,
    46,    7370,  15160,
    12118, 17458, 21853,
    320,   4449,  20048,
    12300, 14502, 21803,
    9019,  19417, 22280,
    1320,  6434,  7916,
    6850,  10275, 17099,
    301,   5637,  7309,
    8443,  13673, 16625,
    4943,  15268, 20252,
    13246, 17809, 18271,
    3230,  8329,  12330,
    1398,  7959,  18145,
    274,   10500, 12954,
    1326,  2057,  5453,  6588,  11514, 11920, 13687, 14692, 17684, 22043,
    3921,  7217,  8693,  10943, 11769, 12121, 12618, 19781, 19932, 20083,
    2166,  5206,  5482,  11453, 13986, 16877, 18184, 18822, 21663, 22611,
    858,   11727, 13116, 14705, 15517, 16109, 17086, 18439, 19047, 20321,
    216,   414,   726,   2616,  6948,  7028,  8288,  12164, 21697, 22606,
    7441,  14498, 15308, 17321,
    1455,  6627,  10112, 13652,
    7448,  7945,  17043, 21758,
    2947,  7933,  11624, 14237,
    514,   4014,  20406, 22226,
    4454,  9815,  11696, 13946,
    7787,  11797, 13113, 15796,
    2363,  4379,  21733, 22277,
    8437,  16504, 16527, 21350,
    8932,  14444, 15680, 19635,
    1273,  11365, 15443,
    3533,  11221, 13249,
    687,   1927,  14403,
    3914,  4221,  8791,
    12479, 15622, 17384,
    14928, 20923, 22283,
    7729,  13750, 15716,
    88,    12409, 19522,
    6852,  16166, 21884,
    1204,  12049, 16487,
    11178, 11226, 15971,
    6382,  14361, 16863,
    10195, 10247, 18188,
    1819,  5834,  8434,
    286,   3333,  21431,
    13950, 15188, 17771,
    10198, 14887, 16751,
    13811, 18307, 18337,
    1210,  18076, 21869,
    5717,  8482,  11896,
    6501,  15625, 17792,
    3965,  4494,  20272,
    1589,  9900,  14472,
    288,   9421,  12009,
    2177,  4626,  16605,
    710,   4696,  18127
  };
};

struct DVB_S2X_TABLE_B16
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 44640;
  static const int LINKS_MIN_CN = 12;
  static const int LINKS_MAX_CN = 14;
  static const int LINKS_TOTAL = 273239;
  static const int DEG_MAX = 16;
  static constexpr int DEG[] = {
    16, 3, 13, 12, 3, 0
  };
  static constexpr int LEN[] = {
    10, 65, 10, 5, 34, 0
  };
  static constexpr int POS[] = {
    1083,  2862,  3815,  4075,  5519,  8003,  9308,  10029, 12476, 12949, 13759, 13918, 14303, 15028, 19737, 19953,
    392,   3781,  6086,  8378,  9952,  10531, 11369, 11954, 14808, 14948, 16585, 16682, 18445, 18960, 19085, 19423,
    3023,  3727,  4797,  5104,  5342,  5994,  8138,  9758,  10146, 11758, 14763, 15300, 15640, 17947, 18690, 18864,
    854,   1259,  2147,  3861,  4258,  4949,  5555,  5940,  9454,  14940, 15521, 16393, 17029, 18789, 18810, 19840,
    4404,  6608,  7232,  7534,  7721,  8079,  8558,  9851,  11560, 11968, 12678, 13410, 15908, 16918, 18108, 18437,
    519,   1591,  1600,  1964,  7706,  9481,  10789, 11068, 13056, 13373, 13759, 14323, 14999, 15505, 17366, 18254,
    545,   673,   2257,  4060,  4289,  4897,  5287,  7318,  8511,  13835, 14540, 14948, 15475, 16718, 17907, 18067,
    1949,  3426,  3440,  4679,  5103,  8692,  8987,  10075, 10923, 11162, 11625, 12805, 13749, 17487, 17807, 18802,
    858,   1969,  2178,  2421,  2592,  2764,  3504,  7084,  9227,  9349,  9960,  10592, 18149, 18974, 19010, 19891,
    3282,  5061,  5908,  6929,  7551,  7927,  8116,  8388,  11305, 11379, 12527, 13982, 14343, 15064, 16259, 19602,
    3730,  8198,  8789,
    1515,  6545,  9678,
    12411, 14800, 17119,
    1000,  15382, 18607,
    977,   1525,  5376,
    4464,  7676,  8937,
    3684,  6730,  9836,
    10203, 10305, 18629,
    2214,  4904,  10873,
    690,   7077,  12623,
    3094,  11228, 16285,
    2583,  5278,  16500,
    4253,  13495, 14465,
    3323,  17768, 19548,
    7670,  12892, 18704,
    373,   14868, 16337,
    8886,  17314, 17578,
    10636, 12385, 19530,
    5734,  14030, 18619,
    3298,  4905,  10156,
    332,   19282, 19924,
    15,    8741,  16429,
    11482, 14807, 15426,
    6055,  12144, 14026,
    1095,  5737,  10525,
    813,   965,   4520,
    808,   8546,  14057,
    3195,  3814,  14683,
    1184,  17287, 19477,
    12411, 13207, 18549,
    2639,  12198, 15656,
    3527,  5555,  14387,
    5563,  10402, 19122,
    4538,  13134, 18766,
    731,   3368,  5865,
    1253,  2238,  8820,
    2764,  11942, 16705,
    6375,  18789, 19594,
    3387,  11299, 14192,
    2486,  2729,  8580,
    3096,  5778,  10416,
    2513,  10609, 14018,
    2508,  10361, 15415,
    5368,  6612,  17415,
    1998,  5687,  17627,
    2711,  16277, 17350,
    5213,  5820,  9217,
    5744,  17794, 19180,
    9095,  15302, 19441,
    10031, 12094, 18856,
    739,   6709,  11785,
    1496,  10418, 15753,
    9437,  11589, 19552,
    7484,  9656,  12381,
    2371,  7237,  7794,
    748,   7213,  9835,
    1930,  6418,  8683,
    5482,  15289, 18623,
    10791, 15731, 18781,
    3622,  5730,  14230,
    1169,  9420,  19665,
    10170, 13288, 14142,
    3855,  7239,  18843,
    816,   16956, 19454,
    3179,  5689,  16584,
    4313,  6450,  8761,  11594, 13187, 14029, 14509, 14944, 16947, 17850, 18270, 18390, 19934,
    1680,  2214,  3859,  3994,  4276,  6984,  12261, 13869, 14696, 16303, 16467, 16756, 19754,
    433,   1009,  3169,  6825,  7128,  7294,  7327,  8175,  16653, 16657, 17314, 18598, 19472,
    1473,  2110,  2777,  5217,  5902,  7136,  7797,  8650,  9116,  11267, 14270, 15342, 18291,
    349,   2892,  4148,  7493,  10142, 13920, 14079, 14423, 15229, 16255, 16808, 18248, 18362,
    5879,  7078,  7457,  9493,  10771, 11010, 12068, 12994, 13007, 13109, 17983, 19531, 20087,
    483,   804,   993,   1078,  1822,  4646,  4658,  5458,  8116,  8443,  10056, 13440, 18939,
    490,   865,   1309,  4339,  6434,  8210,  9248,  10588, 13094, 16476, 17620, 19378, 19708,
    163,   899,   2396,  4212,  6157,  9036,  11116, 13295, 13928, 15111, 16312, 18369, 19470,
    985,   1298,  3213,  5145,  6917,  7136,  7183,  10870, 11329, 12295, 13466, 14989, 17909,
    89,    582,   812,   1761,  5157,  6039,  7843,  8418,  8747,  11575, 13169, 14160,
    1871,  2701,  3252,  7399,  7646,  9785,  11274, 17041, 17361, 18899, 19430, 19691,
    1328,  2165,  2722,  4120,  4132,  9855,  10802, 14441, 16771, 17679, 18611, 18718,
    1166,  3128,  8585,  9843,  10411, 12365, 14141, 15156, 16987, 17484, 17702, 19204,
    943,   952,   4108,  4832,  6706,  9245,  14304, 16528, 17055, 17698, 18419, 19526,
    1340,  7429,  17768,
    10358, 12400, 16483,
    1070,  4760,  10051,
    6992,  8645,  9886,
    756,   7962,  17532,
    13063, 17794, 18323,
    630,   9881,  20052,
    5786,  7779,  15441,
    5049,  5860,  16575,
    10021, 13811, 20097,
    2167,  6374,  19993,
    1412,  4441,  11765,
    14750, 17242, 18319,
    507,   1756,  18791,
    2277,  6901,  9690,
    14828, 15959, 16658,
    4687,  6452,  16770,
    465,   11415, 13696,
    13370, 15379, 16190,
    2988,  12683, 16796,
    6382,  14227, 14295,
    17221, 18167, 18379,
    9656,  9841,  10968,
    16917, 19014, 19869,
    15255, 15400, 17505,
    6403,  15345, 16248,
    6794,  15772, 18005,
    3252,  12230, 12246,
    9062,  9082,  10245,
    405,   9373,  19195,
    5987,  6006,  6026,
    2865,  2887,  2896,
    14889, 14898, 14924,
    7791,  7800,  7809
  };
};

struct DVB_S2X_TABLE_B17
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 46080;
  static const int LINKS_MIN_CN = 13;
  static const int LINKS_MAX_CN = 15;
  static const int LINKS_TOTAL = 271079;
  static const int DEG_MAX = 15;
  static constexpr int DEG[] = {
    15, 12, 3, 12, 4, 3, 0
  };
  static constexpr int LEN[] = {
    10, 10, 55, 5, 10, 38, 0
  };
  static constexpr int POS[] = {
    790,   1010,  1064,  2157,  2569,  3499,  4637,  4951,  6789,  8177,  9888,  10800, 13254, 13829, 17946,
    597,   693,   862,   900,   4750,  4897,  5410,  5441,  6491,  8815,  11894, 13411, 13696, 14103, 18413,
    903,   2779,  2996,  6100,  7489,  7560,  8637,  8853,  10078, 11372, 12040, 15911, 16944, 17059, 17771,
    1761,  2084,  2099,  2232,  3114,  3120,  7062,  10527, 10823, 11945, 13918, 16359, 17110, 17654, 18370,
    677,   1080,  2329,  5100,  5106,  6261,  6383,  10953, 11968, 12186, 13266, 14451, 16092, 17760, 17871,
    1069,  3672,  5304,  6102,  6907,  8087,  9477,  9654,  11581, 14650, 14808, 14920, 15397, 16179, 18595,
    327,   1161,  2624,  4494,  4516,  5555,  6928,  7455,  7959,  8734,  8933,  9753,  10614, 16263, 17689,
    1922,  1932,  6481,  7488,  7722,  8836,  10326, 10633, 11184, 12555, 13485, 14155, 16373, 17486, 18331,
    1056,  1624,  1991,  3585,  6052,  7838,  10123, 11470, 14228, 15146, 16166, 16390, 17630, 17679, 17774,
    295,   3429,  3587,  4597,  5017,  5105,  5136,  5827,  7308,  8266,  9632,  11612, 14879, 16167, 18491,
    1523,  1615,  3368,  6253,  8510,  9070,  10020, 10368, 10718, 11882, 12014, 15077,
    421,   3234,  4290,  4808,  4983,  9992,  12569, 13331, 14457, 15853, 15943, 18318,
    583,   2081,  4320,  6268,  6284,  9084,  9638,  10941, 13335, 15062, 17310, 17667,
    573,   5180,  5758,  5813,  9655,  9892,  10763, 11209, 11717, 14760, 14972, 16395,
    151,   1917,  4190,  5573,  5629,  6725,  9653,  9974,  10008, 11971, 15132, 18170,
    132,   1270,  3074,  7215,  7878,  8266,  11875, 12274, 13134, 15084, 17120, 17556,
    845,   2417,  2435,  5875,  7758,  7807,  12521, 13907, 16400, 17778, 18260, 18370,
    2848,  4714,  5924,  6507,  7595,  8422,  9281,  13140, 13276, 14589, 15269, 15943,
    278,   931,   1186,  3588,  4072,  6943,  8429,  9348,  9863,  10056, 14376, 15846,
    3480,  3887,  4932,  5888,  10246, 10281, 11065, 11434, 12290, 12345, 12635, 13917,
    528,   14523, 18426,
    4127,  5613,  9647,
    8777,  15790, 18168,
    3491,  5608,  10216,
    5154,  8811,  16363,
    437,   2834,  3470,
    9675,  12773, 17150,
    2456,  7748,  8623,
    3758,  14333, 18097,
    3969,  17136, 18610,
    6745,  13708, 18656,
    6152,  10273, 13316,
    7822,  14888, 15541,
    15501, 16598, 18531,
    2497,  8828,  15453,
    3443,  6899,  7293,
    3721,  13954, 15822,
    719,   13335, 15342,
    1566,  7588,  8362,
    8644,  13389, 17476,
    1513,  8257,  15942,
    2620,  7224,  15557,
    7696,  12178, 17371,
    5285,  8439,  11367,
    4961,  7657,  17125,
    11382, 11542, 16823,
    2429,  7538,  10992,
    680,   7651,  10178,
    6794,  11231, 18328,
    1195,  12837, 15710,
    1156,  17454, 18260,
    6541,  10062, 17436,
    70,    282,   7519,
    608,   1919,  7299,
    3339,  11187, 15788,
    4771,  12599, 13753,
    1822,  4233,  10561,
    5233,  14135, 15888,
    4109,  14837, 18717,
    3011,  15644, 17342,
    10668, 11462, 15065,
    2486,  6822,  7486,
    3851,  6182,  11215,
    595,   11064, 15525,
    9738,  10045, 14128,
    929,   2222,  11949,
    10950, 12273, 15503,
    3672,  6760,  9589,
    3583,  5887,  8907,
    13351, 15134, 17291,
    7770,  9928,  12542,
    268,   10496, 17937,
    1318,  2938,  6971,
    428,   1791,  9729,
    6895,  8896,  10420,
    2946,  4619,  6209,  7377,  7931,  8740,  9223,  12171, 12985, 13795, 14141, 16233,
    217,   958,   995,   3144,  5905,  6178,  6596,  10427, 15013, 15669, 16343, 18465,
    357,   2579,  4550,  5223,  5890,  7642,  7900,  8441,  13416, 17740, 18131, 18679,
    894,   1776,  1852,  3262,  5830,  6008,  7877,  9570,  15838, 16029, 16176, 16583,
    2190,  2698,  3277,  4748,  5575,  6822,  8356,  9692,  11406, 11697, 12991, 15275,
    9695,  12587, 15112, 17987,
    5221,  5710,  15272, 17606,
    3068,  9034,  11853, 17189,
    2503,  7618,  9336,  15768,
    2069,  2258,  7450,  10219,
    778,   8645,  12173, 12429,
    6960,  9073,  12411, 15065,
    3515,  5848,  12776, 15706,
    4725,  5967,  15682, 17350,
    12416, 14871, 16503, 18679,
    4218,  13329, 17613,
    752,   6184,  9180,
    3188,  3971,  11453,
    2580,  17414, 18001,
    10285, 13728, 15896,
    612,   10652, 12442,
    7637,  7724,  15724,
    1427,  15130, 15355,
    77,    5271,  8934,
    3121,  10373, 11930,
    11913, 12253, 15701,
    6582,  9841,  10243,
    11595, 16319, 16332,
    6402,  11107, 14899,
    4593,  5442,  9630,
    1321,  3877,  17467,
    1335,  10771, 12311,
    24,    16695, 18578,
    11396, 17644, 18618,
    7306,  14777, 15287,
    1809,  5769,  10827,
    137,   3555,  5186,
    201,   3340,  10470,
    8954,  12160, 17867,
    6744,  9179,  14780,
    3280,  9637,  17720,
    1867,  10642, 14613,
    4292,  7451,  14924,
    1621,  13335, 16834,
    8289,  14826, 15302,
    3610,  12151, 12159,
    3968,  3976,  5492,
    3491,  14734, 17314,
    3774,  8427,  10437,
    3128,  4202,  15889,
    3821,  9781,  10862,
    8264,  9191,  12337,
    1476,  8123,  8946
  };
};

struct DVB_S2X_TABLE_B18
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 47520;
  static const int LINKS_MIN_CN = 14;
  static const int LINKS_MAX_CN = 16;
  static const int LINKS_TOTAL = 272519;
  static const int DEG_MAX = 15;
  static constexpr int DEG[] = {
    15, 12, 3, 12, 4, 3, 0
  };
  static constexpr int LEN[] = {
    10, 10, 55, 5, 10, 42, 0
  };
  static constexpr int POS[] = {
    214,   632,   923,   3251,  6036,  6570,  8258,  9462,  10399, 11781, 12778, 14807, 15369, 16105, 17153,
    652,   1565,  3710,  3720,  4603,  7139,  7817,  9076,  11532, 13729, 14362, 15379, 15488, 15541, 15777,
    98,    130,   520,   622,   1806,  2474,  3378,  4773,  6896,  7533,  7744,  11317, 11511, 11574, 15853,
    95,    1168,  2985,  4995,  5032,  5310,  6932,  8571,  9181,  9193,  9896,  10257, 12336, 12811, 14754,
    1178,  1969,  2935,  3432,  3628,  4814,  5218,  5676,  6214,  9953,  10421, 11091, 13574, 13772, 15191,
    2356,  7171,  8062,  8652,  8801,  9917,  10037, 10164, 10671, 10975, 13460, 15594, 15936, 16378, 16711,
    1401,  3622,  4493,  5190,  6908,  7193,  9583,  10283, 11832, 12152, 12609, 13343, 13427, 13839, 15591,
    485,   4930,  7552,  7574,  7629,  8514,  10870, 10888, 11614, 11774, 12414, 13159, 15555, 16874, 16897,
    203,   711,   1373,  5149,  7271,  8191,  8523,  9012,  9645,  11391, 13989, 14402, 15572, 16490, 16985,
    1020,  3606,  4996,  5016,  7632,  9959,  11098, 11792, 12649, 12859, 13381, 14579, 16204, 16899, 17030,
    3653,  4711,  4777,  4779,  5203,  8250,  10671, 12130, 12449, 13340, 14148, 14853,
    3209,  4098,  4415,  4777,  5358,  6681,  8049,  9805,  10139, 15608, 15628, 16532,
    37,    279,   2890,  3692,  5680,  7136,  10862, 11442, 13688, 14572, 14978, 16246,
    150,   2430,  2659,  3909,  8619,  9432,  12372, 12720, 13213, 14635, 15316, 15727,
    759,   7725,  8548,  10772, 10897, 11392, 12273, 13619, 14465, 14488, 16191, 17039,
    499,   2346,  4909,  4998,  6555,  10631, 12374, 13539, 13954, 14728, 14768, 16213,
    286,   458,   1072,  1982,  3593,  4541,  5803,  7260,  7681,  10279, 15178, 15701,
    683,   850,   1430,  4534,  4990,  9870,  10385, 10508, 12633, 13516, 14763, 15297,
    1304,  1620,  2788,  4431,  8333,  10080, 11887, 11994, 12430, 12578, 15816, 16317,
    1020,  2376,  3071,  4752,  7844,  12085, 12338, 12790, 13930, 14874, 16264, 16947,
    2917,  14555, 16711,
    7491,  9627,  11576,
    863,   2959,  15686,
    3115,  3698,  4721,
    1992,  6059,  9232,
    6038,  7185,  14573,
    1340,  3421,  3694,
    4609,  8628,  12390,
    2208,  8716,  8858,
    13808, 15922, 16148,
    2249,  11974, 16896,
    5853,  13225, 13788,
    815,   4711,  6530,
    2209,  2468,  14725,
    4410,  5415,  13854,
    6355,  6825,  15280,
    309,   9537,  16469,
    8068,  13746, 14396,
    9323,  10747, 15016,
    6903,  8218,  11652,
    680,   3121,  8534,
    7311,  10942, 15810,
    877,   965,   6600,
    1742,  5760,  12311,
    3137,  4854,  11102,
    2422,  7181,  7657,
    11818, 13570, 15583,
    6318,  13695, 13717,
    3866,  5279,  6931,
    10864, 15450, 15719,
    4540,  7389,  17179,
    4951,  15064, 16397,
    7605,  10323, 11651,
    4137,  6356,  7204,
    5439,  10310, 14018,
    12843, 13416, 14274,
    2804,  9644,  10370,
    11150, 13275, 14293,
    5134,  5240,  11495,
    864,   2151,  13541,
    736,   13561, 17218,
    8287,  13491, 16780,
    5718,  15660, 16593,
    8455,  13981, 15971,
    9467,  14810, 16276,
    2229,  3946,  8111,
    7217,  7241,  12272,
    67,    3678,  5473,
    6684,  10779, 16599,
    9465,  12372, 16208,
    6794,  14248, 16412,
    2214,  10815, 11926,
    3021,  6374,  12487,
    3950,  6042,  9573,
    7939,  11686, 14299,
    350,   3529,  4079,  4256,  5849,  7190,  8860,  10139, 10232, 10819, 11381, 14147,
    317,   992,   2421,  3962,  4699,  6659,  7506,  10225, 10422, 10631, 12471, 17133,
    1042,  1396,  2353,  2995,  3377,  5431,  5872,  6507,  6958,  8392,  10521, 15036,
    2799,  3188,  3338,  4212,  5257,  6667,  7299,  8647,  9365,  9822,  15393, 16334,
    1095,  1357,  1964,  2027,  3439,  5975,  7077,  10182, 11538, 12085, 14873, 15081,
    5063,  15980, 16044, 16895,
    2675,  3343,  8369,  15958,
    186,   10209, 12824, 14269,
    4306,  6720,  10338, 16589,
    2260,  7944,  10926, 16496,
    821,   2379,  3453,  11530,
    818,   3049,  7651,  16046,
    2127,  3717,  10120, 15916,
    3267,  11412, 13437, 15833,
    1386,  7706,  15875, 16377,
    508,   11392, 13620,
    4097,  14269, 15322,
    9921,  12311, 12914,
    7184,  10571, 15214,
    3917,  8952,  11193,
    1241,  11798, 14788,
    10457, 14430, 14892,
    5603,  14302, 16388,
    427,   2770,  6440,
    9317,  10050, 14671,
    3199,  5089,  5353,
    7239,  7411,  13299,
    306,   1674,  14551,
    816,   7484,  12448,
    706,   13444, 15695,
    554,   4597,  9489,
    2104,  6359,  12468,
    9266,  10617, 11381,
    3277,  3793,  6604,
    1731,  1887,  9707,
    885,   5432,  7884,
    1786,  8137,  13590,
    5024,  6886,  16155,
    2777,  7172,  8568,
    3551,  8533,  13805,
    3299,  8732,  15678,
    633,   9789,  14366,
    11345, 14813, 16179,
    1216,  5414,  13845,
    5832,  7474,  10047,
    1074,  3156,  9228,
    4090,  7614,  10391,
    2624,  5520,  13591,
    3462,  12548, 12556,
    2027,  11569, 14106,
    1821,  3571,  8001,
    3979,  7285,  9173,
    11161, 12334, 16935,
    2642,  8811,  8819,
    5359,  11128, 13310,
    200,   6362,  9809,
    1174,  8836,  13549
  };
};

struct DVB_S2X_TABLE_B19
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 48600;
  static const int LINKS_MIN_CN = 15;
  static const int LINKS_MAX_CN = 17;
  static const int LINKS_TOTAL = 264599;
  static const int DEG_MAX = 14;
  static constexpr int DEG[] = {
    14, 11, 3, 11, 4, 3, 0
  };
  static constexpr int LEN[] = {
    10, 10, 55, 5, 10, 45, 0
  };
  static constexpr int POS[] = {
    15,    865,   1308,  2887,  6202,  6440,  7201,  9014,  10015, 10041, 11780, 13602, 14265, 15506,
    1054,  1416,  2903,  3746,  3753,  7608,  9121,  11097, 11761, 12334, 14304, 15284, 15489, 15860,
    388,   942,   2207,  2627,  3453,  6684,  7105,  8633,  9292,  9413,  11574, 11789, 12990, 13558,
    896,   1802,  2100,  4497,  6650,  7324,  7693,  11232, 11848, 12625, 12982, 13238, 13719, 15260,
    2165,  2313,  3930,  5231,  9263,  10942, 12167, 12938, 13529, 13806, 14792, 15118, 15304, 15970,
    286,   951,   1083,  3401,  5527,  10235, 10417, 10717, 12204, 12522, 12974, 13623, 13645, 13721,
    895,   2500,  3051,  4393,  4686,  5972,  7932,  8025,  8731,  9744,  10323, 10619, 14961, 16054,
    1631,  2304,  3149,  3453,  4133,  4459,  5442,  7051,  8622,  10051, 10791, 11566, 12754, 14016,
    2747,  4371,  5647,  5694,  5899,  8378,  8965,  9917,  10472, 12163, 13349, 14760, 15005, 16196,
    1119,  3605,  4141,  4969,  6694,  7031,  7748,  8800,  9268,  9982,  10605, 11768, 12185, 12254,
    2825,  3983,  3991,  6410,  8249,  8457,  8770,  9183,  12028, 12213, 12448,
    604,   1720,  2373,  2919,  7212,  7867,  7967,  8044,  10466, 13860, 14417,
    301,   1594,  5664,  9711,  9763,  10804, 10816, 11681, 11842, 12204, 15041,
    47,    555,   1796,  2032,  3923,  5175,  5204,  7322,  12008, 15192, 15273,
    2564,  2827,  4053,  4355,  5383,  6611,  7951,  10231, 10605, 12712, 15035,
    2243,  3129,  5665,  9703,  9913,  10101, 10212, 13549, 14952, 15661, 15696,
    204,   775,   3771,  5704,  7007,  7095,  7543,  9656,  12426, 12882, 15545,
    4224,  4480,  4521,  5860,  5993,  6200,  6810,  8966,  13588, 13658, 14863,
    528,   2425,  4261,  6534,  9097,  9746,  10277, 11570, 11722, 12614, 14288,
    3612,  4482,  6901,  8453,  8546,  9588,  10302, 11161, 11365, 14894, 15018,
    3742,  10567, 16199,
    7133,  9058,  11953,
    6322,  6923,  15941,
    8088,  9184,  10475,
    677,   2998,  15174,
    4761,  5594,  9851,
    2307,  13609, 15098,
    4022,  12283, 12286,
    5993,  8346,  11208,
    3910,  15175, 15351,
    6964,  10422, 13372,
    6125,  13835, 14292,
    6234,  7466,  8536,
    4785,  6567,  8576,
    6743,  10561, 14130,
    1735,  7324,  11459,
    3414,  5686,  12861,
    5457,  13085, 14942,
    2789,  9707,  10189,
    3474,  7428,  8655,
    393,   4691,  5694,
    4825,  8033,  15186,
    1458,  4367,  5864,
    5843,  11855, 14660,
    7748,  8189,  15486,
    4810,  13665, 13848,
    5818,  6651,  8375,
    693,   5872,  7945,
    172,   11594, 12687,
    5430,  12616, 15658,
    6934,  7909,  11246,
    3637,  12306, 12362,
    3471,  5213,  9689,
    14049, 14507, 15642,
    2668,  3016,  15757,
    3740,  7546,  12925,
    6446,  14217, 15795,
    6834,  12517, 16183,
    6930,  8193,  10296,
    4279,  5463,  11460,
    197,   1031,  3531,
    9722,  9899,  11678,
    2962,  7375,  15462,
    181,   2986,  13487,
    908,   3631,  15042,
    3273,  8070,  10865,
    4099,  6682,  15571,
    2864,  6393,  12639,
    6486,  7891,  14560,
    10819, 11213, 13405,
    71,    6734,  8450,
    3467,  5016,  15956,
    6267,  10180, 15388,
    1625,  2994,  13339,
    2517,  4489,  7357,
    27,    454,   1440,  1874,  2627,  6126,  8518,  9120,  10144, 13007, 13892,
    439,   991,   5000,  5256,  7215,  8109,  8680,  10694, 12078, 13454, 15221,
    1162,  4754,  5101,  5940,  8304,  10907, 11008, 11528, 13514, 13837, 15230,
    1230,  1618,  2547,  2922,  5619,  7415,  12126, 12406, 14378, 15306, 15408,
    140,   446,   3378,  3908,  6904,  7783,  8587,  10420, 10630, 12602, 13597,
    1004,  3374,  7234,  9291,
    8358,  8550,  8658,  11681,
    3669,  7500,  8610,  10360,
    4892,  9971,  11846, 13233,
    329,   1735,  2397,  13639,
    12658, 12789, 14985, 15091,
    8580,  8769,  9451,  15185,
    2383,  3542,  4270,  8840,
    1379,  2256,  2452,  15454,
    1457,  6459,  7332,  12968,
    5323,  7398,  14302,
    6056,  9938,  10618,
    104,   6041,  12225,
    4895,  14004, 14522,
    1942,  6495,  6826,
    8262,  15584, 16179,
    11604, 12644, 12874,
    3538,  9506,  15206,
    666,   6038,  8853,
    5941,  8753,  12449,
    6500,  8604,  16045,
    7937,  12018, 12966,
    8164,  14164, 14528,
    867,   6180,  10192,
    3403,  5208,  10213,
    1752,  7835,  11867,
    1576,  6993,  11260,
    2245,  8237,  14506,
    1284,  1807,  5480,
    9778,  10034, 13115,
    8398,  13975, 15705,
    6906,  7770,  8242,
    1896,  3277,  10631,
    2168,  6889,  8036,
    1616,  6908,  11754,
    11353, 13863, 14389,
    2514,  7212,  12887,
    5661,  6511,  10622,
    4690,  8892,  10754,
    12200, 12486, 14850,
    4663,  15405, 15949,
    302,   309,   1904,
    5265,  7100,  7105,
    4996,  7928,  11084,
    5425,  10367, 15826,
    6766,  8245,  11914,
    8091,  13882, 13887,
    1308,  1348,  7944,
    4730,  10272, 14249,
    5001,  5838,  11633,
    3687,  4732,  15948,
    285,   5437,  10939,
    7254,  10928, 11235,
    2038,  6236,  14036,
    9407,  12341, 16040
  };
};

struct DVB_S2X_TABLE_B20
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 50400;
  static const int LINKS_MIN_CN = 18;
  static const int LINKS_MAX_CN = 20;
  static const int LINKS_TOTAL = 282599;
  static const int DEG_MAX = 15;
  static constexpr int DEG[] = {
    15, 12, 4, 3, 4, 3, 0
  };
  static constexpr int LEN[] = {
    10, 15, 15, 35, 15, 50, 0
  };
  static constexpr int POS[] = {
    66,    862,   939,   3380,  4920,  5225,  5330,  6218,  7204,  7532,  7689,  9135,  9363,  10504, 10694,
    1993,  2656,  4602,  6079,  7569,  7724,  9038,  9647,  9979,  11845, 12641, 12783, 13451, 13661, 14166,
    1360,  2046,  3315,  3423,  3974,  4747,  6535,  6632,  7261,  8173,  8391,  9517,  9928,  11749, 11761,
    3373,  3910,  3965,  4146,  4171,  6195,  6384,  7642,  9337,  9563,  9716,  11490, 12393, 13068, 14016,
    244,   2500,  3970,  6097,  6208,  6669,  7479,  7667,  8234,  9367,  10437, 11623, 12138, 12212, 12454,
    665,   1162,  1990,  2144,  2356,  4400,  6032,  9336,  9988,  10693, 11378, 12021, 12582, 13874, 13958,
    1129,  1527,  1725,  1902,  2039,  2107,  3241,  5991,  6086,  7866,  10793, 11132, 11318, 13636, 14100,
    611,   2141,  2552,  2602,  3049,  3185,  5339,  6495,  7390,  8033,  9068,  10844, 10977, 11047, 13995,
    2805,  4137,  4523,  4841,  7408,  8551,  8667,  8749,  8979,  9232,  9934,  10345, 10634, 11646, 12771,
    144,   1120,  2295,  3469,  4991,  5613,  7186,  7858,  9116,  9328,  10850, 11492, 11837, 12155, 13103,
    803,   1580,  1797,  4719,  6743,  7061,  7753,  8376,  9046,  11635, 11721, 13350,
    1432,  3534,  4822,  6282,  6412,  7180,  7619,  7936,  11278, 12531, 13074, 13084,
    2013,  2575,  2887,  3930,  4725,  5498,  5625,  6209,  6836,  7268,  9062,  10950,
    515,   1037,  2033,  2624,  3044,  6028,  7163,  8729,  8772,  10358, 10659, 12466,
    464,   1685,  2749,  3321,  3778,  5322,  5386,  6294,  7928,  8871,  10278, 13040,
    408,   829,   1672,  2667,  3077,  3545,  3703,  5213,  5381,  7937,  8474,  13126,
    1617,  2490,  2636,  2723,  5431,  6975,  7159,  7900,  10849, 11572, 11887, 12462,
    1402,  2373,  6408,  6656,  6704,  8040,  8841,  9541,  11818, 13891, 14006, 14239,
    1388,  2078,  2136,  3514,  5090,  8083,  8510,  9200,  9814,  11142, 11625, 12980,
    561,   1659,  2611,  3085,  3367,  3804,  6021,  6209,  6348,  8282,  8475,  11386,
    2457,  3223,  4495,  4869,  5314,  5774,  6532,  6552,  8987,  9196,  9199,  11591,
    627,   1069,  3015,  3048,  4275,  4545,  4617,  5606,  6070,  8237,  8659,  8953,
    1028,  4096,  5253,  6370,  8087,  8382,  8950,  8984,  9618,  12843, 13519, 14356,
    560,   604,   663,   2209,  2709,  4421,  6291,  7322,  10054, 11747, 11997, 14192,
    361,   938,   993,   2884,  3386,  9431,  9798,  10155, 11892, 12184, 13140, 13808,
    1045,  5017,  9862,  13620,
    205,   3913,  9136,  13316,
    2994,  4307,  10330, 13439,
    2437,  6367,  9411,  10505,
    5546,  6653,  7663,  12391,
    2825,  3446,  5803,  11254,
    1459,  5988,  7895,  9221,
    3968,  6470,  7739,  12977,
    3298,  4154,  12918, 14282,
    8890,  9389,  10144, 12801,
    2529,  3668,  10005, 11652,
    4558,  8324,  10112, 12696,
    491,   6153,  11815, 12813,
    1300,  12716, 13107, 13847,
    5542,  6160,  11226, 12846,
    5206,  9994,  11133,
    7113,  12088, 12802,
    950,   1805,  8437,
    4411,  10474, 12911,
    3599,  7495,  8984,
    4751,  10097, 10284,
    67,    5056,  11979,
    10633, 10770, 13585,
    1198,  3963,  9181,
    746,   4895,  11288,
    7724,  8170,  9246,
    6542,  8235,  8589,
    1512,  4603,  11098,
    7082,  13053, 13985,
    3887,  9094,  10355,
    3417,  6588,  12800,
    4151,  5569,  8184,
    5557,  8162,  12572,
    2565,  6091,  6359,
    2792,  4430,  6281,
    7936,  10786, 11229,
    677,   3184,  12460,
    2468,  2884,  11714,
    87,    2318,  9383,
    976,   3614,  10292,
    969,   3180,  14286,
    7818,  12285, 13535,
    3471,  10797, 11502,
    3552,  10568, 12836,
    1386,  6971,  13457,
    987,   7598,  9275,
    5039,  13533, 13739,
    1854,  5210,  11261,
    10603, 11753, 12263,
    722,   1030,  12267,
    2720,  5083,  5350,  9274,
    3377,  8717,  9414,  12039,
    1355,  6452,  10130, 13008,
    5112,  7583,  9971,  10955,
    4633,  8781,  12791, 13607,
    1535,  5803,  8062,  10467,
    2326,  8224,  9176,  12082,
    939,   8480,  11823, 13045,
    380,   425,   4943,  10388,
    4001,  4293,  7887,  9858,
    3734,  3746,  9929,  12310,
    1592,  6062,  6419,  10292,
    101,   2538,  6316,  13640,
    3038,  5921,  6156,  6529,
    3820,  10279, 12229, 12404,
    761,   3735,  8874,
    4985,  9636,  14004,
    1744,  2501,  9257,
    3223,  7816,  10249,
    765,   2768,  5363,
    4911,  5948,  13726,
    6745,  9749,  11658,
    1373,  4860,  13952,
    120,   407,   13132,
    862,   2571,  3681,
    3706,  5914,  8019,
    7465,  10479, 12795,
    441,   1017,  1563,
    6638,  8730,  10379,
    3229,  4169,  11333,
    1181,  7252,  11670,
    1090,  4576,  8680,
    943,   9116,  11566,
    3180,  7882,  12535,
    2944,  4411,  12747,
    3153,  5618,  7782,
    428,   2208,  10359,
    447,   6906,  12192,
    8495,  11164, 12870,
    641,   6397,  11868,
    4165,  4534,  11544,
    4594,  7957,  11969,
    3667,  4604,  7920,
    2253,  4617,  13638,
    1099,  4214,  6076,
    461,   8085,  9875,
    8128,  13331, 13740,
    8527,  9749,  12563,
    4216,  6105,  12391,
    6583,  13362, 14130,
    566,   2898,  4772,
    4048,  7696,  8342,
    539,   5111,  9923,
    931,   3789,  7276,
    5306,  13717, 13901,
    1540,  11240, 11353,
    1845,  2752,  6810,
    8553,  10094, 10228,
    9625,  12761, 13252,
    4518,  4526,  9215,
    5394,  6447,  10864,
    7497,  11962, 12795,
    2679,  3310,  3743,
    2764,  10853, 12702,
    6409,  9498,  10387
  };
};

struct DVB_S2X_TABLE_B21
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 55440;
  static const int LINKS_MIN_CN = 28;
  static const int LINKS_MAX_CN = 30;
  static const int LINKS_TOTAL = 273239;
  static const int DEG_MAX = 13;
  static constexpr int DEG[] = {
    13, 12, 3, 12, 5, 3, 0
  };
  static constexpr int LEN[] = {
    10, 5, 60, 10, 5, 64, 0
  };
  static constexpr int POS[] = {
    726,   794,   1587,  2475,  3114,  3917,  4471,  6207,  7451,  8203,  8218,  8583,  8941,
    418,   480,   1320,  1357,  1481,  2323,  3677,  5112,  7038,  7198,  8066,  9260,  9282,
    1506,  2585,  3336,  4543,  4828,  5571,  5954,  6047,  6081,  7691,  8090,  8824,  9153,
    164,   888,   1867,  2685,  2983,  4071,  4848,  4930,  5882,  7085,  7861,  8545,  8689,
    766,   1004,  1143,  1782,  1996,  2506,  2944,  3094,  4085,  5728,  8634,  8737,  8759,
    199,   341,   2068,  2100,  2708,  2896,  4173,  5846,  6167,  7798,  9101,  9159,  9329,
    617,   752,   1647,  2258,  2597,  4708,  5808,  6726,  7293,  7800,  7988,  8825,  9055,
    315,   408,   620,   1256,  1985,  2560,  3226,  5526,  6463,  6927,  7223,  7505,  7669,
    1361,  1528,  2397,  3246,  3370,  4333,  5167,  5333,  7409,  8075,  8197,  8279,  9138,
    665,   876,   2039,  2703,  2864,  3485,  3767,  4823,  7275,  7599,  8274,  8694,  9334,
    1160,  1717,  1750,  2158,  3040,  3506,  3764,  3828,  4261,  4292,  5134,  6789,
    1857,  2119,  2952,  6145,  6897,  7582,  7639,  8032,  8080,  8181,  8221,  8454,
    421,   794,   1511,  2166,  2489,  3936,  4288,  5440,  5901,  6490,  7266,  8858,
    456,   2565,  4071,  4395,  4451,  4888,  5338,  5351,  6608,  7602,  7835,  9024,
    617,   912,   3362,  4085,  4404,  5050,  5244,  6043,  6444,  6721,  7414,  8353,
    4535,  7597,  7853,
    2632,  4652,  6491,
    877,   1378,  8828,
    434,   3309,  8607,
    1075,  2525,  4103,
    958,   2220,  3471,
    2256,  4350,  7277,
    1731,  4306,  8524,
    470,   6369,  9026,
    2605,  3171,  8760,
    1886,  4900,  7558,
    3825,  4488,  9230,
    228,   3806,  8101,
    3607,  7835,  8035,
    5280,  7413,  8380,
    2606,  5100,  5549,
    2309,  4329,  8570,
    1577,  4746,  7473,
    2939,  4664,  7327,
    2440,  8572,  8912,
    4143,  8221,  8561,
    3982,  5316,  7329,
    387,   745,   5199,
    2563,  4077,  9076,
    1428,  6482,  9178,
    4600,  7640,  8483,
    3918,  5239,  5388,
    2006,  6768,  9041,
    5766,  7058,  7758,
    2741,  3382,  5713,
    116,   1863,  4193,
    2339,  4499,  8437,
    1799,  5408,  6711,
    6937,  7536,  8100,
    8313,  8388,  9277,
    1743,  3100,  7424,
    1959,  2130,  2230,
    5007,  6692,  7748,
    808,   3333,  5951,
    1719,  7648,  8645,
    102,   2996,  6153,
    739,   2765,  6496,
    1107,  1760,  7023,
    1067,  2666,  9235,
    1125,  3760,  8095,
    2047,  3143,  6383,
    2698,  3440,  5405,
    1746,  1854,  1965,
    380,   3171,  5816,
    4155,  5210,  9325,
    2290,  2658,  3766,
    167,   6239,  6635,
    1338,  1541,  5813,
    6148,  6574,  7436,
    3598,  3777,  6367,
    731,   4247,  8887,
    2152,  2600,  8950,
    3774,  4099,  6605,
    2819,  3315,  6492,
    1195,  3774,  7126,
    572,   2723,  3467,  3509,  5379,  6756,  6853,  7335,  7973,  8087,  8202,  9000,
    817,   3136,  3533,  3732,  5001,  5148,  5202,  5402,  6602,  7236,  7605,  8275,
    185,   325,   591,   1559,  1635,  2826,  3352,  3634,  3937,  5814,  8101,  8133,
    758,   1780,  1965,  2932,  4010,  4621,  7103,  7249,  7328,  7878,  8754,  8805,
    528,   1433,  2926,  3557,  3780,  4650,  4671,  5253,  5488,  5517,  5681,  8300,
    1172,  2131,  3702,  4455,  4504,  5216,  5920,  6371,  6660,  7953,  9036,  9185,
    639,   1572,  1714,  1957,  3145,  5123,  5330,  5419,  6418,  7163,  7237,  9235,
    166,   486,   708,   1071,  2179,  3700,  4756,  5606,  5685,  6426,  6467,  6902,
    462,   486,   735,   2065,  2558,  3196,  4006,  5344,  5617,  7451,  8141,  8436,
    435,   3016,  4173,  4235,  4415,  4731,  5396,  7340,  8002,  8155,  8279,  9081,
    560,   2200,  2649,  3690,  8636,
    4156,  5971,  7133,  7480,  8218,
    1398,  2219,  3796,  4877,  6376,
    506,   1284,  6906,  7288,  9131,
    643,   1661,  5057,  8011,  8241,
    859,   3508,  5030,
    575,   3942,  6198,
    3472,  5037,  8710,
    3850,  8080,  9216,
    3203,  8128,  8836,
    3059,  5057,  8120,
    3804,  6339,  8539,
    2355,  6922,  8235,
    2035,  2133,  7090,
    4787,  5994,  6966,
    1484,  4897,  7766,
    3977,  7211,  7682,
    3030,  4150,  7823,
    516,   2443,  7919,
    5120,  5715,  6141,
    1551,  6029,  7124,
    1995,  2156,  6952,
    4686,  4944,  8175,
    2763,  4667,  7284,
    3648,  7312,  7361,
    333,   3231,  4029,
    692,   2273,  9068,
    15,    3757,  7203,
    2870,  4217,  8458,
    1501,  2721,  6548,
    92,    2144,  6570,
    1846,  4578,  7972,
    2999,  3542,  4001,
    1658,  8479,  8763,
    4169,  6305,  7774,
    2357,  2475,  8504,
    1418,  1516,  3587,
    2715,  2754,  7789,
    1765,  2387,  8858,
    5115,  8712,  9029,
    160,   2544,  5818,
    1600,  3668,  7706,
    1589,  3143,  7396,
    3310,  3953,  8862,
    2054,  3075,  4821,
    4061,  4355,  6130,
    2086,  2534,  4831,
    4229,  4981,  9057,
    24,    5398,  6062,
    1370,  7446,  8116,
    409,   1199,  6499,
    1088,  1648,  7267,
    176,   8059,  9351,
    558,   3830,  4748,
    4772,  8116,  8277,
    1253,  2418,  3450,
    5305,  5679,  7537,
    437,   561,   7932,
    3058,  4317,  9184,
    382,   1516,  6576,
    471,   6158,  7469,
    5,     955,   2716,
    964,   5239,  8890,
    727,   738,   4868,
    7443,  7560,  7580,
    2075,  2266,  8918,
    4021,  4267,  6797,
    6103,  6111,  8823,
    6523,  6531,  9063
  };
};

struct DVB_S2X_TABLE_B22
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 38880;
  static const int LINKS_MIN_CN = 10;
  static const int LINKS_MAX_CN = 11;
  static const int LINKS_TOTAL = 284759;
  static const int DEG_MAX = 19;
  static constexpr int DEG[] = {
    19, 4, 3, 0
  };
  static constexpr int LEN[] = {
    19, 19, 70, 0
  };
  static constexpr int POS[] = {
    113,   1557,  3316,  5680,  6241,  10407, 13404, 13947, 14040, 14353, 15522, 15698, 16079, 17363, 19374, 19543, 20530, 22833, 24339,
    271,   1361,  6236,  7006,  7307,  7333,  12768, 15441, 15568, 17923, 18341, 20321, 21502, 22023, 23938, 25351, 25590, 25876, 25910,
    73,    605,   872,   4008,  6279,  7653,  10346, 10799, 12482, 12935, 13604, 15909, 16526, 19782, 20506, 22804, 23629, 24859, 25600,
    1445,  1690,  4304,  4851,  8919,  9176,  9252,  13783, 16076, 16675, 17274, 18806, 18882, 20819, 21958, 22451, 23869, 23999, 24177,
    1290,  2337,  5661,  6371,  8996,  10102, 10941, 11360, 12242, 14918, 16808, 20571, 23374, 24046, 25045, 25060, 25662, 25783, 25913,
    28,    42,    1926,  3421,  3503,  8558,  9453,  10168, 15820, 17473, 19571, 19685, 22790, 23336, 23367, 23890, 24061, 25657, 25680,
    0,     1709,  4041,  4932,  5968,  7123,  8430,  9564,  10596, 11026, 14761, 19484, 20762, 20858, 23803, 24016, 24795, 25853, 25863,
    29,    1625,  6500,  6609,  16831, 18517, 18568, 18738, 19387, 20159, 20544, 21603, 21941, 24137, 24269, 24416, 24803, 25154, 25395,
    55,    66,    871,   3700,  11426, 13221, 15001, 16367, 17601, 18380, 22796, 23488, 23938, 25476, 25635, 25678, 25807, 25857, 25872,
    1,     19,    5958,  8548,  8860,  11489, 16845, 18450, 18469, 19496, 20190, 23173, 25262, 25566, 25668, 25679, 25858, 25888, 25915,
    7520,  7690,  8855,  9183,  14654, 16695, 17121, 17854, 18083, 18428, 19633, 20470, 20736, 21720, 22335, 23273, 25083, 25293, 25403,
    48,    58,    410,   1299,  3786,  10668, 18523, 18963, 20864, 22106, 22308, 23033, 23107, 23128, 23990, 24286, 24409, 24595, 25802,
    12,    51,    3894,  6539,  8276,  10885, 11644, 12777, 13427, 14039, 15954, 17078, 19053, 20537, 22863, 24521, 25087, 25463, 25838,
    3509,  8748,  9581,  11509, 15884, 16230, 17583, 19264, 20900, 21001, 21310, 22547, 22756, 22959, 24768, 24814, 25594, 25626, 25880,
    21,    29,    69,    1448,  2386,  4601,  6626,  6667,  10242, 13141, 13852, 14137, 18640, 19951, 22449, 23454, 24431, 25512, 25814,
    18,    53,    7890,  9934,  10063, 16728, 19040, 19809, 20825, 21522, 21800, 23582, 24556, 25031, 25547, 25562, 25733, 25789, 25906,
    4096,  4582,  5766,  5894,  6517,  10027, 12182, 13247, 15207, 17041, 18958, 20133, 20503, 22228, 24332, 24613, 25689, 25855, 25883,
    0,     25,    819,   5539,  7076,  7536,  7695,  9532,  13668, 15051, 17683, 19665, 20253, 21996, 24136, 24890, 25758, 25784, 25807,
    34,    40,    44,    4215,  6076,  7427,  7965,  8777,  11017, 15593, 19542, 22202, 22973, 23397, 23423, 24418, 24873, 25107, 25644,
    1595,  6216,  22850, 25439,
    1562,  15172, 19517, 22362,
    7508,  12879, 24324, 24496,
    6298,  15819, 16757, 18721,
    11173, 15175, 19966, 21195,
    59,    13505, 16941, 23793,
    2267,  4830,  12023, 20587,
    8827,  9278,  13072, 16664,
    14419, 17463, 23398, 25348,
    6112,  16534, 20423, 22698,
    493,   8914,  21103, 24799,
    6896,  12761, 13206, 25873,
    2,     1380,  12322, 21701,
    11600, 21306, 25753, 25790,
    8421,  13076, 14271, 15401,
    9630,  14112, 19017, 20955,
    212,   13932, 21781, 25824,
    5961,  9110,  16654, 19636,
    58,    5434,  9936,  12770,
    6575,  11433, 19798,
    2731,  7338,  20926,
    14253, 18463, 25404,
    21791, 24805, 25869,
    2,     11646, 15850,
    6075,  8586,  23819,
    18435, 22093, 24852,
    2103,  2368,  11704,
    10925, 17402, 18232,
    9062,  25061, 25674,
    18497, 20853, 23404,
    18606, 19364, 19551,
    7,     1022,  25543,
    6744,  15481, 25868,
    9081,  17305, 25164,
    8,     23701, 25883,
    9680,  19955, 22848,
    56,    4564,  19121,
    5595,  15086, 25892,
    3174,  17127, 23183,
    19397, 19817, 20275,
    12561, 24571, 25825,
    7111,  9889,  25865,
    19104, 20189, 21851,
    549,   9686,  25548,
    6586,  20325, 25906,
    3224,  20710, 21637,
    641,   15215, 25754,
    13484, 23729, 25818,
    2043,  7493,  24246,
    16860, 25230, 25768,
    22047, 24200, 24902,
    9391,  18040, 19499,
    7855,  24336, 25069,
    23834, 25570, 25852,
    1977,  8800,  25756,
    6671,  21772, 25859,
    3279,  6710,  24444,
    24099, 25117, 25820,
    5553,  12306, 25915,
    48,    11107, 23907,
    10832, 11974, 25773,
    2223,  17905, 25484,
    16782, 17135, 20446,
    475,   2861,  3457,
    16218, 22449, 24362,
    11716, 22200, 25897,
    8315,  15009, 22633,
    13,    20480, 25852,
    12352, 18658, 25687,
    3681,  14794, 23703,
    30,    24531, 25846,
    4103,  22077, 24107,
    23837, 25622, 25812,
    3627,  13387, 25839,
    908,   5367,  19388,
    0,     6894,  25795,
    20322, 23546, 25181,
    8178,  25260, 25437,
    2449,  13244, 22565,
    31,    18928, 22741,
    1312,  5134,  14838,
    6085,  13937, 24220,
    66,    14633, 25670,
    47,    22512, 25472,
    8867,  24704, 25279,
    6742,  21623, 22745,
    147,   9948,  24178,
    8522,  24261, 24307,
    19202, 22406, 24609
  };
};

struct DVB_S2X_TABLE_B23
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 43200;
  static const int LINKS_MIN_CN = 12;
  static const int LINKS_MAX_CN = 14;
  static const int LINKS_TOTAL = 281159;
  static const int DEG_MAX = 16;
  static constexpr int DEG[] = {
    16, 4, 3, 0
  };
  static constexpr int LEN[] = {
    23, 2, 95, 0
  };
  static constexpr int POS[] = {
    692,   1779,  1973,  2726,  5151,  6088,  7921,  9618,  11804, 13043, 15975, 16214, 16889, 16980, 18585, 18648,
    13,    4090,  4319,  5288,  8102,  10110, 10481, 10527, 10953, 11185, 12069, 13177, 14217, 15963, 17661, 20959,
    2330,  2516,  2902,  4087,  6338,  8015,  8638,  9436,  10294, 10843, 11802, 12304, 12371, 14095, 18486, 18996,
    125,   586,   5137,  5701,  6432,  6500,  8131,  8327,  10488, 11032, 11334, 11449, 12504, 16000, 20753, 21317,
    30,    480,   2681,  3635,  3898,  4058,  12803, 14734, 20252, 20306, 20680, 21329, 21333, 21466, 21562, 21568,
    20,    44,    738,   4965,  5516,  7659,  8464,  8759,  12216, 14630, 18241, 18711, 19093, 20217, 21316, 21490,
    31,    43,    3554,  5289,  5667,  8687,  14885, 16579, 17883, 18384, 18486, 19142, 20785, 20932, 21131, 21308,
    7054,  9276,  10435, 12324, 12354, 13849, 14285, 16482, 19212, 19217, 19221, 20499, 20831, 20925, 21195, 21247,
    9,     13,    4099,  10353, 10747, 14884, 15492, 17650, 19291, 19394, 20356, 20658, 21068, 21117, 21183, 21586,
    28,    2250,  2980,  8988,  10282, 12503, 13301, 18351, 20546, 20622, 21006, 21293, 21344, 21472, 21530, 21542,
    17,    32,    2521,  4374,  5098,  7525,  13035, 14437, 15283, 18635, 19136, 20240, 21147, 21179, 21300, 21349,
    57,    4735,  5657,  7649,  8807,  12375, 16092, 16178, 16379, 17545, 19461, 19489, 20321, 20530, 21453, 21457,
    35,    55,    5333,  14423, 14670, 15438, 19468, 19667, 20823, 21084, 21241, 21344, 21447, 21520, 21554, 21586,
    13,    20,    2025,  11854, 12516, 14938, 15929, 18081, 19730, 19929, 20408, 21338, 21391, 21425, 21468, 21546,
    54,    7451,  8176,  10136, 15240, 16442, 16482, 19431, 19483, 19762, 20647, 20839, 20966, 21512, 21579, 21592,
    26,    465,   3604,  4233,  9831,  11741, 13692, 18953, 18974, 21021, 21039, 21133, 21282, 21488, 21532, 21558,
    1,     7,     16,    59,    6979,  7675,  7717,  9791,  12370, 13050, 18534, 18729, 19846, 19864, 20127, 20165,
    15,    31,    11089, 12360, 13640, 14237, 17937, 18043, 18410, 19443, 21107, 21444, 21449, 21528, 21576, 21584,
    32,    51,    9768,  17848, 18095, 19326, 19594, 19618, 19765, 20440, 20482, 20582, 21236, 21338, 21563, 21587,
    44,    55,    4864,  10253, 11306, 12117, 13076, 13901, 15610, 17057, 18205, 19794, 20939, 21132, 21267, 21573,
    3436,  11304, 15361, 16511, 16860, 18238, 18639, 19341, 20106, 20123, 20407, 21200, 21280, 21452, 21526, 21569,
    679,   8822,  11045, 14403, 16588, 17838, 19117, 19453, 20265, 20558, 21374, 21396, 21428, 21442, 21529, 21590,
    391,   13002, 13140, 14314, 17169, 17175, 17846, 18122, 19447, 20075, 20212, 20436, 20583, 21330, 21359, 21403,
    7601,  10257, 20060, 21285,
    4419,  9150,  18097, 20315,
    4675,  13376, 21435,
    610,   1238,  16704,
    5732,  7096,  21104,
    5690,  13531, 14545,
    4334,  14839, 17357,
    8,     2814,  17674,
    2392,  8128,  18369,
    502,   7403,  15133,
    343,   13624, 20673,
    13188, 15687, 21593,
    321,   16866, 21347,
    1242,  4261,  17449,
    4691,  8086,  8691,
    8500,  11538, 20278,
    6269,  12905, 18192,
    5984,  15452, 17111,
    11541, 18717, 21534,
    16,    10780, 16107,
    12310, 12959, 20390,
    1365,  18306, 19634,
    6125,  19132, 20242,
    3012,  17233, 21533,
    5816,  13021, 21440,
    13207, 17811, 18798,
    2762,  7586,  12139,
    3949,  5545,  13584,
    11374, 18279, 19241,
    2736,  10989, 21209,
    4095,  20677, 21395,
    8251,  10084, 20498,
    7628,  8875,  21406,
    2743,  8943,  9090,
    1817,  7788,  15767,
    9333,  9838,  21268,
    6203,  9480,  12042,
    5747,  21187, 21468,
    2553,  18281, 21500,
    3179,  9155,  15222,
    12498, 18109, 20326,
    14106, 21209, 21592,
    7454,  17484, 20791,
    20804, 21120, 21574,
    5754,  18178, 20935,
    30,    4322,  21381,
    11905, 20416, 21397,
    12452, 19899, 21497,
    1917,  6028,  16868,
    9891,  18710, 18953,
    912,   21083, 21446,
    370,   14355, 18069,
    16519, 19003, 20902,
    11163, 17558, 18424,
    8427,  14396, 21405,
    8885,  11796, 21361,
    4960,  15431, 20653,
    11944, 16839, 21236,
    9967,  14529, 17208,
    14144, 19354, 19745,
    7986,  12680, 21396,
    6097,  11501, 13028,
    33,    13803, 21038,
    3177,  20124, 20803,
    2692,  6841,  18655,
    971,   5892,  14354,
    3887,  19455, 21271,
    17214, 17315, 21148,
    6539,  13910, 21526,
    3809,  5153,  15793,
    3865,  21438, 21510,
    7129,  17787, 19636,
    5972,  13150, 14182,
    7078,  14906, 16911,
    15705, 21160, 21482,
    5479,  13860, 19763,
    16817, 19722, 20001,
    14649, 16147, 18886,
    15138, 18578, 21502,
    2096,  2534,  17760,
    11920, 13460, 19783,
    19876, 20071, 20583,
    6241,  14230, 20775,
    16138, 16386, 21371,
    8616,  15624, 18453,
    6013,  8015,  21599,
    9184,  10688, 20792,
    18122, 21141, 21469,
    10706, 13177, 20957,
    15148, 15584, 20959,
    9114,  9432,  16467,
    5483,  14687, 14705,
    8325,  21161, 21410,
    2328,  17670, 19834,
    7015,  20802, 21385,
    52,    5451,  20379,
    9689,  15537, 19733
  };
};

struct DVB_S2X_TABLE_B24
{
  static const int M = 360;
  static const int N = 64800;
  static const int K = 47520;
  static const int LINKS_MIN_CN = 15;
  static const int LINKS_MAX_CN = 17;
  static const int LINKS_TOTAL = 278999;
  static const int DEG_MAX = 15;
  static constexpr int DEG[] = {
    15, 4, 3, 0
  };
  static constexpr int LEN[] = {
    23, 7, 102, 0
  };
  static constexpr int POS[] = {
    696,   989,   1238,  3091,  3116,  3738,  4269,  6406,  7033,  8048,  9157,  10254, 12033, 16456, 16912,
    444,   1488,  6541,  8626,  10735, 12447, 13111, 13706, 14135, 15195, 15947, 16453, 16916, 17137, 17268,
    401,   460,   992,   1145,  1576,  1678,  2238,  2320,  4280,  6770,  10027, 12486, 15363, 16714, 17157,
    1161,  3108,  3727,  4508,  5092,  5348,  5582,  7727,  11793, 12515, 12917, 13362, 14247, 16717, 17205,
    542,   1190,  6883,  7911,  8349,  8835,  10489, 11631, 14195, 15009, 15454, 15482, 16632, 17040, 17063,
    17,    487,   776,   880,   5077,  6172,  9771,  11446, 12798, 16016, 16109, 16171, 17087, 17132, 17226,
    1337,  3275,  3462,  4229,  9246,  10180, 10845, 10866, 12250, 13633, 14482, 16024, 16812, 17186, 17241,
    15,    980,   2305,  3674,  5971,  8224,  11499, 11752, 11770, 12897, 14082, 14836, 15311, 16391, 17209,
    0,     3926,  5869,  8696,  9351,  9391,  11371, 14052, 14172, 14636, 14974, 16619, 16961, 17033, 17237,
    3033,  5317,  6501,  8579,  10698, 12168, 12966, 14019, 15392, 15806, 15991, 16493, 16690, 17062, 17090,
    981,   1205,  4400,  6410,  11003, 13319, 13405, 14695, 15846, 16297, 16492, 16563, 16616, 16862, 16953,
    1725,  4276,  8869,  9588,  14062, 14486, 15474, 15548, 16300, 16432, 17042, 17050, 17060, 17175, 17273,
    1807,  5921,  9960,  10011, 14305, 14490, 14872, 15852, 16054, 16061, 16306, 16799, 16833, 17136, 17262,
    2826,  4752,  6017,  6540,  7016,  8201,  14245, 14419, 14716, 15983, 16569, 16652, 17171, 17179, 17247,
    1662,  2516,  3345,  5229,  8086,  9686,  11456, 12210, 14595, 15808, 16011, 16421, 16825, 17112, 17195,
    2890,  4821,  5987,  7226,  8823,  9869,  12468, 14694, 15352, 15805, 16075, 16462, 17102, 17251, 17263,
    3751,  3890,  4382,  5720,  10281, 10411, 11350, 12721, 13121, 14127, 14980, 15202, 15335, 16735, 17123,
    26,    30,    2805,  5457,  6630,  7188,  7477,  7556,  11065, 16608, 16859, 16909, 16943, 17030, 17103,
    40,    4524,  5043,  5566,  9645,  10204, 10282, 11696, 13080, 14837, 15607, 16274, 17034, 17225, 17266,
    904,   3157,  6284,  7151,  7984,  11712, 12887, 13767, 15547, 16099, 16753, 16829, 17044, 17250, 17259,
    7,     311,   4876,  8334,  9249,  11267, 14072, 14559, 15003, 15235, 15686, 16331, 17177, 17238, 17253,
    4410,  8066,  8596,  9631,  10369, 11249, 12610, 15769, 16791, 16960, 17018, 17037, 17062, 17165, 17204,
    24,    8261,  9691,  10138, 11607, 12782, 12786, 13424, 13933, 15262, 15795, 16476, 17084, 17193, 17220,
    88,    11622, 14705, 15890,
    304,   2026,  2638,  6018,
    1163,  4268,  11620, 17232,
    9701,  11785, 14463, 17260,
    4118,  10952, 12224, 17006,
    3647,  10823, 11521, 12060,
    1717,  3753,  9199,  11642,
    2187,  14280, 17220,
    14787, 16903, 17061,
    381,   3534,  4294,
    3149,  6947,  8323,
    12562, 16724, 16881,
    7289,  9997,  15306,
    5615,  13152, 17260,
    5666,  16926, 17027,
    4190,  7798,  16831,
    4778,  10629, 17180,
    10001, 13884, 15453,
    6,     2237,  8203,
    7831,  15144, 15160,
    9186,  17204, 17243,
    9435,  17168, 17237,
    42,    5701,  17159,
    7812,  14259, 15715,
    39,    4513,  6658,
    38,    9368,  11273,
    1119,  4785,  17182,
    5620,  16521, 16729,
    16,    6685,  17242,
    210,   3452,  12383,
    466,   14462, 16250,
    10548, 12633, 13962,
    1452,  6005,  16453,
    22,    4120,  13684,
    5195,  11563, 16522,
    5518,  16705, 17201,
    12233, 14552, 15471,
    6067,  13440, 17248,
    8660,  8967,  17061,
    8673,  12176, 15051,
    5959,  15767, 16541,
    3244,  12109, 12414,
    31,    15913, 16323,
    3270,  15686, 16653,
    24,    7346,  14675,
    12,    1531,  8740,
    6228,  7565,  16667,
    16936, 17122, 17162,
    4868,  8451,  13183,
    3714,  4451,  16919,
    11313, 13801, 17132,
    17070, 17191, 17242,
    1911,  11201, 17186,
    14,    17190, 17254,
    11760, 16008, 16832,
    14543, 17033, 17278,
    16129, 16765, 17155,
    6891,  15561, 17007,
    12741, 14744, 17116,
    8992,  16661, 17277,
    1861,  11130, 16742,
    4822,  13331, 16192,
    13281, 14027, 14989,
    38,    14887, 17141,
    10698, 13452, 15674,
    4,     2539,  16877,
    857,   17170, 17249,
    11449, 11906, 12867,
    285,   14118, 16831,
    15191, 17214, 17242,
    39,    728,   16915,
    2469,  12969, 15579,
    16644, 17151, 17164,
    2592,  8280,  10448,
    9236,  12431, 17173,
    9064,  16892, 17233,
    4526,  16146, 17038,
    31,    2116,  16083,
    15837, 16951, 17031,
    5362,  8382,  16618,
    6137,  13199, 17221,
    2841,  15068, 17068,
    24,    3620,  17003,
    9880,  15718, 16764,
    1784,  10240, 17209,
    2731,  10293, 10846,
    3121,  8723,  16598,
    8563,  15662, 17088,
    13,    1167,  14676,
    29,    13850, 15963,
    3654,  7553,  8114,
    23,    4362,  14865,
    4434,  14741, 16688,
    8362,  13901, 17244,
    13687, 16736, 17232,
    46,    4229,  13394,
    13169, 16383, 16972,
    16031, 16681, 16952,
    3384,  9894,  12580,
    9841,  14414, 16165,
    5013,  17099, 17115,
    2130,  8941,  17266,
    6907,  15428, 17241,
    16,    1860,  17235,
    2151,  16014, 16643,
    14954, 15958, 17222,
    3969,  8419,  15116,
    31,    15593, 16984,
    11514, 16605, 17255,
  };
};

struct DVB_S2X_TABLE_C1
{
  static const int M = 360;
  static const int N = 16200;
  static const int K = 3960;
  static const int LINKS_MIN_CN = 3;
  static const int LINKS_MAX_CN = 4;
  static const int LINKS_TOTAL = 48959;
  static const int DEG_MAX = 10;
  static constexpr int DEG[] = {
    10, 3, 0
  };
  static constexpr int LEN[] = {
    5, 6, 0
  };
  static constexpr int POS[] = {
    9054,  9186,  12155, 1000,  7383,  6459,  2992,  4723,  8135,  11250,
    2624,  9237,  7139,  12238, 11962, 4361,  5292,  10967, 11036, 8105,
    2044,  11996, 5654,  7568,  7002,  3549,  4767,  8767,  2872,  8345,
    6966,  8473,  5180,  8084,  3359,  5051,  9576,  5139,  1893,  902,
    3041,  3801,  8252,  11951, 909,   8535,  1038,  8400,  3200,  4585,
    5291,  10484, 10872,
    442,   7516,  3720,
    11469, 769,   10998,
    10575, 1436,  2935,
    6905,  8610,  11285,
    1873,  5634,  6383,
  };
};

struct DVB_S2X_TABLE_C2
{
  static const int M = 360;
  static const int N = 16200;
  static const int K = 4320;
  static const int LINKS_MIN_CN = 4;
  static const int LINKS_MAX_CN = 5;
  static const int LINKS_TOTAL = 58319;
  static const int DEG_MAX = 21;
  static constexpr int DEG[] = {
    21, 4, 3, 0
  };
  static constexpr int LEN[] = {
    3, 6, 3, 0
  };
  static constexpr int POS[] = {
    1953,  2331,  2545,  2623,  4653,  5012,  5700,  6458,  6875,  7605,  7694,  7881,  8416,  8758,  9181,  9555,  9578,  9932,  10068, 11479, 11699,
    514,   784,   2059,  2129,  2386,  2454,  3396,  5184,  6624,  6825,  7533,  7861,  9116,  9473,  9601,  10432, 11011, 11159, 11378, 11528, 11598,
    483,   1303,  1735,  2291,  3302,  3648,  4222,  4522,  5511,  6626,  6804,  7404,  7752,  7982,  8108,  8930,  9151,  9793,  9876,  10786, 11879,
    1956,  7572,  9020,  9971,
    13,    1578,  7445,  8373,
    6805,  6857,  8615,  11179,
    7983,  8022,  10017, 11748,
    4939,  8861,  10444, 11661,
    2278,  3733,  6265,  10009,
    4494,  7974,  10649,
    8909,  11030, 11696,
    3131,  9964,  10480,
  };
};

struct DVB_S2X_TABLE_C3
{
  static const int M = 360;
  static const int N = 16200;
  static const int K = 5040;
  static const int LINKS_MIN_CN = 4;
  static const int LINKS_MAX_CN = 5;
  static const int LINKS_TOTAL = 55799;
  static const int DEG_MAX = 12;
  static constexpr int DEG[] = {
    12, 9, 3, 0
  };
  static constexpr int LEN[] = {
    5, 1, 8, 0
  };
  static constexpr int POS[] = {
    1606,  3617,  7973,  6737,  9495,  4209,  9209,  4565,  4250,  7823,  9384,  400,
    4105,  991,   923,   3562,  3892,  10993, 5640,  8196,  6652,  4653,  9116,  7677,
    6348,  1341,  5445,  1494,  7799,  831,   4952,  5106,  3011,  9921,  6537,  8476,
    7854,  5274,  8572,  3741,  5674,  11128, 4097,  1398,  5671,  7302,  8155,  2641,
    6548,  2103,  590,   5749,  5722,  10,    2682,  1063,  633,   2949,  207,   6065,
    2828,  6366,  4766,  399,   935,   7611,  84,    150,   3146,
    5363,  7455,  7140,
    9297,  482,   4848,
    8458,  1631,  5344,
    5729,  6767,  4836,
    11019, 4463,  3882,
    4107,  9610,  5454,
    11137, 4328,  6307,
    3260,  7897,  3809,
  };
};

struct DVB_S2X_TABLE_C4
{
  static const int M = 360;
  static const int N = 16200;
  static const int K = 7560;
  static const int LINKS_MIN_CN = 8;
  static const int LINKS_MAX_CN = 9;
  static const int LINKS_TOTAL = 73079;
  static const int DEG_MAX = 24;
  static constexpr int DEG[] = {
    24, 4, 3, 0
  };
  static constexpr int LEN[] = {
    4, 8, 9, 0
  };
  static constexpr int POS[] = {
    3,     137,   314,   327,   983,   1597,  2028,  3043,  3217,  4109,  6020,  6178,  6535,  6560,  7146,  7180,  7408,  7790,  7893,  8123,  8313,  8526,  8616,  8638,
    356,   1197,  1208,  1839,  1903,  2712,  3088,  3537,  4091,  4301,  4919,  5068,  6025,  6195,  6324,  6378,  6686,  6829,  7558,  7745,  8042,  8382,  8587,  8602,
    18,    187,   1115,  1417,  1463,  2300,  2328,  3502,  3805,  4677,  4827,  5551,  5968,  6394,  6412,  6753,  7169,  7524,  7695,  7976,  8069,  8118,  8522,  8582,
    714,   2713,  2726,  2964,  3055,  3220,  3334,  3459,  5557,  5765,  5841,  6290,  6419,  6573,  6856,  7786,  7937,  8156,  8286,  8327,  8384,  8448,  8539,  8559,
    3452,  7935,  8092,  8623,
    56,    1955,  3000,  8242,
    1809,  4094,  7991,  8489,
    2220,  6455,  7849,  8548,
    1006,  2576,  3247,  6976,
    2177,  6048,  7795,  8295,
    1413,  2595,  7446,  8594,
    2101,  3714,  7541,  8531,
    10,    5961,  7484,
    3144,  4636,  5282,
    5708,  5875,  8390,
    3322,  5223,  7975,
    197,   4653,  8283,
    598,   5393,  8624,
    906,   7249,  7542,
    1223,  2148,  8195,
    976,   2001,  5005,
  };
};

struct DVB_S2X_TABLE_C5
{
  static const int M = 360;
  static const int N = 16200;
  static const int K = 8640;
  static const int LINKS_MIN_CN = 9;
  static const int LINKS_MAX_CN = 10;
  static const int LINKS_TOTAL = 75239;
  static const int DEG_MAX = 21;
  static constexpr int DEG[] = {
    21, 4, 3, 0
  };
  static constexpr int LEN[] = {
    5, 5, 14, 0
  };
  static constexpr int POS[] = {
    32,    384,   430,   591,   1296,  1976,  1999,  2137,  2175,  3638,  4214,  4304,  4486,  4662,  4999,  5174,  5700,  6969,  7115,  7138,  7189,
    1788,  1881,  1910,  2724,  4504,  4928,  4973,  5616,  5686,  5718,  5846,  6523,  6893,  6994,  7074,  7100,  7277,  7399,  7476,  7480,  7537,
    2791,  2824,  2927,  4196,  4298,  4800,  4948,  5361,  5401,  5688,  5818,  5862,  5969,  6029,  6244,  6645,  6962,  7203,  7302,  7454,  7534,
    574,   1461,  1826,  2056,  2069,  2387,  2794,  3349,  3366,  4951,  5826,  5834,  5903,  6640,  6762,  6786,  6859,  7043,  7418,  7431,  7554,
    14,    178,   675,   823,   890,   930,   1209,  1311,  2898,  4339,  4600,  5203,  6485,  6549,  6970,  7208,  7218,  7298,  7454,  7457,  7462,
    4075,  4188,  7313,  7553,
    5145,  6018,  7148,  7507,
    3198,  4858,  6983,  7033,
    3170,  5126,  5625,  6901,
    2839,  6093,  7071,  7450,
    11,    3735,  5413,
    2497,  5400,  7238,
    2067,  5172,  5714,
    1889,  7173,  7329,
    1795,  2773,  3499,
    2695,  2944,  6735,
    3221,  4625,  5897,
    1690,  6122,  6816,
    5013,  6839,  7358,
    1601,  6849,  7415,
    2180,  7389,  7543,
    2121,  6838,  7054,
    1948,  3109,  5046,
    272,   1015,  7464,
  };
};

struct DVB_S2X_TABLE_C6
{
  static const int M = 360;
  static const int N = 16200;
  static const int K = 9360;
  static const int LINKS_MIN_CN = 9;
  static const int LINKS_MAX_CN = 10;
  static const int LINKS_TOTAL = 68399;
  static const int DEG_MAX = 13;
  static constexpr int DEG[] = {
    13, 12, 3, 0
  };
  static constexpr int LEN[] = {
    2, 6, 18, 0
  };
  static constexpr int POS[] = {
    6106,  5389,  698,   6749,  6294,  1653,  1984,  2167,  6139,  6095,  3832,  2468,  6115,
    4202,  2362,  1852,  1264,  3564,  6345,  498,   6137,  3908,  3302,  527,   2767,  6667,
    3422,  1242,  1377,  2238,  2899,  1974,  1957,  261,   3463,  4994,  215,   2338,
    3016,  5109,  6533,  2665,  5300,  4908,  4967,  5787,  726,   229,   1970,  2789,
    6146,  5765,  6649,  2871,  884,   1670,  2597,  5058,  3659,  6594,  5042,  304,
    5521,  2811,  0,     4214,  2626,  2211,  1236,  3771,  852,   6356,  6797,  3463,
    1523,  1830,  3938,  5593,  2128,  5791,  3421,  3680,  6692,  1377,  3808,  3475,
    5551,  6035,  2247,  3662,  759,   6783,  116,   6380,  4586,  3367,  1,     5003,
    3518,  6557,  6510,
    1830,  839,   4421,
    5431,  5959,  6152,
    3174,  5113,  4520,
    5399,  1303,  2496,
    2841,  741,   220,
    2731,  1830,  4193,
    1875,  3935,  223,
    9,     4720,  423,
    3107,  2676,  840,
    1950,  6177,  6457,
    4091,  94,    5102,
    1907,  6050,  3455,
    714,   3,     559,
    502,   4268,  4164,
    1019,  5558,  271,
    6127,  854,   3221,
    959,   5337,  2735,
  };
};

struct DVB_S2X_TABLE_C7
{
  static const int M = 360;
  static const int N = 16200;
  static const int K = 11520;
  static const int LINKS_MIN_CN = 12;
  static const int LINKS_MAX_CN = 13;
  static const int LINKS_TOTAL = 60839;
  static const int DEG_MAX = 12;
  static constexpr int DEG[] = {
    12, 5, 3, 0
  };
  static constexpr int LEN[] = {
    5, 1, 26, 0
  };
  static constexpr int POS[] = {
    2686,  655,   2308,  1603,  336,   1743,  2778,  1263,  3555,  185,   4212,  621,
    286,   2994,  2599,  2265,  126,   314,   3992,  4560,  2845,  2764,  2540,  1476,
    2670,  3599,  2900,  2281,  3597,  2768,  4423,  2805,  836,   130,   1204,  4162,
    1884,  4228,  1253,  2578,  3053,  3650,  2587,  4468,  2784,  1644,  1490,  4655,
    4258,  1699,  4363,  4555,  3810,  4046,  3806,  344,   2459,  4067,  3327,  3510,
    1021,  2741,  2528,  2168,  2820,
    254,   1080,  616,
    1465,  4192,  2972,
    2356,  2976,  1534,
    4412,  1937,  2724,
    1430,  3024,  600,
    1952,  2136,  3573,
    3009,  3123,  1288,
    4553,  2299,  806,
    2997,  402,   4330,
    3302,  4567,  698,
    2364,  498,   3146,
    1809,  647,   992,
    3512,  32,    4301,
    1238,  251,   450,
    1657,  737,   641,
    560,   1720,  2893,
    1689,  2206,  902,
    3998,  1784,  2094,
    2090,  3126,  1201,
    1565,  764,   3473,
    891,   903,   2413,
    2286,  2900,  2348,
    3026,  2033,  1502,
    2404,  1243,  556,
    308,   2222,  3825,
    1523,  3311,  389,
  };
};

struct DVB_S2X_TABLE_C8
{
  static const int M = 360;
  static const int N = 32400;
  static const int K = 6480;
  static const int LINKS_MIN_CN = 3;
  static const int LINKS_MAX_CN = 4;
  static const int LINKS_TOTAL = 103679;
  static const int DEG_MAX = 13;
  static constexpr int DEG[] = {
    13, 3, 0
  };
  static constexpr int LEN[] = {
    9, 9, 0
  };
  static constexpr int POS[] = {
    18222, 6715,  4908,  21568, 22821, 11708, 4769,  4495,  22243, 25872, 9051,  19072, 13956,
    2038,  5205,  21215, 21009, 9584,  2403,  23652, 20866, 20130, 677,   9509,  6136,  773,
    19936, 14590, 17829, 473,   4432,  23171, 11386, 17937, 22084, 24450, 267,   8822,  19335,
    16376, 16769, 5111,  9794,  18907, 827,   12385, 12370, 21647, 10938, 23619, 11633, 15865,
    23417, 7631,  12243, 21546, 4192,  22117, 14757, 4118,  9686,  17021, 8531,  15989, 8807,
    15533, 16584, 18529, 19699, 17821, 4252,  1254,  5952,  3163,  20295, 6944,  1022,  19743,
    129,   16579, 23524, 25897, 14690, 11222, 16250, 9925,  4268,  999,   7102,  24528, 152,
    18361, 3708,  3454,  16604, 1551,  5809,  20324, 4775,  22418, 19091, 19674, 10975, 7327,
    24133, 10950, 22779, 11388, 13818, 20668, 7556,  12333, 16446, 19684, 12510, 25118, 8162,
    17026, 6850,  1269,
    21895, 7137,  25270,
    11858, 24153, 13303,
    7885,  16438, 12805,
    10473, 15004, 8052,
    2088,  10379, 10067,
    21438, 13426, 10440,
    17696, 727,   12164,
    22623, 8408,  17849,
  };
};

struct DVB_S2X_TABLE_C9
{
  static const int M = 360;
  static const int N = 32400;
  static const int K = 7920;
  static const int LINKS_MIN_CN = 3;
  static const int LINKS_MAX_CN = 4;
  static const int LINKS_TOTAL = 97919;
  static const int DEG_MAX = 10;
  static constexpr int DEG[] = {
    10, 3, 0
  };
  static constexpr int LEN[] = {
    10, 12, 0
  };
  static constexpr int POS[] = {
    20617, 6867,  14845, 11974, 22563, 190,   17207, 4052,  7406,  16007,
    21448, 14846, 2543,  23380, 16633, 20365, 16869, 13411, 19853, 795,
    5200,  2330,  2775,  23620, 20643, 10745, 14742, 6493,  14222, 20939,
    9445,  9523,  12769, 7332,  21792, 18717, 16397, 14016, 9481,  22162,
    2922,  6427,  4497,  4116,  17658, 2581,  14364, 3781,  18851, 22974,
    10383, 2184,  1433,  3889,  12828, 17424, 17580, 20936, 1390,  21374,
    425,   2063,  22398, 20907, 9445,  14790, 4457,  723,   7048,  4072,
    11771, 9640,  23212, 9613,  12042, 8335,  21386, 20129, 13521, 16301,
    14867, 12501, 1086,  21526, 17701, 17731, 20907, 8790,  19224, 5784,
    7107,  19690, 17616, 5800,  9501,  23320, 16878, 794,   15931, 17539,
    4556,  21783, 1524,
    20100, 11706, 23663,
    2535,  15530, 6116,
    12078, 3867,  2663,
    19629, 20246, 7024,
    11748, 11426, 19802,
    15942, 12333, 5316,
    11521, 3170,  17818,
    2289,  23780, 16575,
    6649,  16991, 13025,
    20050, 10619, 10250,
    3944,  13063, 5656,
  };
};

struct DVB_S2X_TABLE_C10
{
  static const int M = 360;
  static const int N = 32400;
  static const int K = 10800;
  static const int LINKS_MIN_CN = 4;
  static const int LINKS_MAX_CN = 5;
  static const int LINKS_TOTAL = 107999;
  static const int DEG_MAX = 12;
  static constexpr int DEG[] = {
    12, 3, 0
  };
  static constexpr int LEN[] = {
    10, 20, 0
  };
  static constexpr int POS[] = {
    7416,  4093,  16722, 1023,  20586, 12219, 9175,  16284, 1554,  10113, 19849, 17545,
    13140, 3257,  2110,  13888, 3023,  1537,  1598,  15018, 18931, 13905, 10617, 1014,
    339,   14366, 3309,  15360, 18358, 3196,  4412,  6023,  7070,  17380, 2777,  6691,
    12720, 17634, 4141,  1400,  8247,  18201, 16077, 11314, 11928, 3494,  3155,  2865,
    21038, 6928,  3860,  1943,  20292, 6526,  12939, 15182, 3957,  5651,  356,   2673,
    20555, 17905, 5724,  13932, 1218,  17763, 5912,  5164,  6233,  6220,  1277,  19209,
    19190, 4498,  4950,  6645,  5482,  5667,  13701, 16334, 15231, 735,   8589,  12344,
    679,   17849, 17807, 16033, 10181, 3368,  5778,  8275,  2736,  14042, 17506, 6005,
    1576,  10259, 10525, 3007,  16522, 697,   7726,  8641,  14323, 2893,  8168,  11070,
    17270, 10180, 18740, 847,   4969,  14715, 19316, 5530,  17428, 11193, 9861,  13562,
    6156,  18787, 10467,
    2422,  3723,  10769,
    8015,  18716, 13406,
    5969,  15949, 3084,
    6855,  13990, 3764,
    10351, 15779, 10392,
    16078, 19034, 11279,
    11747, 6608,  4188,
    19699, 8928,  8045,
    4598,  7219,  11391,
    19766, 11871, 5692,
    7487,  15905, 17621,
    8554,  7751,  16516,
    4981,  20250, 16146,
    12524, 21364, 10793,
    17083, 2051,  8862,
    1315,  6246,  7721,
    18043, 16652, 5502,
    1432,  5674,  2224,
    11257, 1312,  8453,
  };
};

#endif

